簡體   English   中英

Hibernate超時在PostgreSQL 10中不起作用

[英]Hibernate timeout does not work in postgresql 10

persistence.xml中:

      <properties>
        <property name="showSql" value="true"/>
        <property name="hibernate.dialect" value="${hibernate.dialect:org.hibernate.dialect.Oracle10gDialect}"/>
        <propertyname="hibernate.connection.datasource"value="java:/alarmmgr/alarmMonitorDB"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="false"/>
        <property name="hibernate.use_sql_comments" value="false"/>
        <property name="hibernate.jdbc.wrap_result_sets" value="false"/>
        <property name="hibernate.hibernate.cache.use_query_cache" value="true"/>
        <property name="javax.persistence.query.timeout" value="1" />

    </properties>

查詢:

em.createQuery(query).setHint("javax.persistence.query.timeout", 1)
                                    .setFirstResult(payload.getStart())
                                    .setMaxResults(payload.getSize() > MAX_FETCH ? MAX_FETCH : payload.getSize())
                                    .getResultList()

查詢返回了7,000行...但是超時不起作用。

JDBC Postgresql驅動程序無法與屬性javax.persistence.query.timeout一起使用,因此我采取了變通方法。

em.unwrap(Session.class).doWork(connection -> {
            long maxTimeOutMil = TimeUnit.SECONDS.toMillis(MAX_TIMEOUT);
            connection.createStatement().execute("set statement_timeout = " + maxTimeOutMil);
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM