如何使用Java或Hibernate为某些特定查询设置超时。我面临的问题是,有些查询我必须在某些时候获取大量数据,但在较长时间内没有响应,导致应用程序无响应。
答案 0 :(得分:2)
Hibernate查询有setTimeout()方法
Query query = session.createQuery(someQueryString);
query.setTimeout(theTimeOut);
答案 1 :(得分:1)
JPA 标准属性javax.persistence.query.timeout
也可以作为"提示"提供。每个查询。
query.setHint("javax.persistence.query.timeout", someTimeout);
因此避免将您的代码绑定到一个JPA提供商或其他人。
答案 2 :(得分: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);