2016-04-15 286 views
1

如何使用Java或Hibernate为某些特定查询设置超时时间。我面临的问题是,有些查询在某些时候必须获取大量数据,因此无法响应较长时间,导致应用程序无响应。基于查询设置超时时间

回答

1

Hibernate查询,具有setTimeout()方法

Query query = session.createQuery(someQueryString); 
query.setTimeout(theTimeOut); 
0

Hibernate支持事务超时:

//set transaction timeout to 5 seconds at session 
    Session sess = factory.openSession(); 
    sess.getTransaction().setTimeout(5); 

您还可以设置为query level

Query q = sess.createQuery("from....") 
      .setTimeOut(3); 
1

JPA 标准属性javax.persistence.query.timeout也可以作为一个“提示”到每个查询而提供。

query.setHint("javax.persistence.query.timeout", someTimeout); 

因此避免将您的代码绑定到一个JPA提供程序或另一个。