根据查询设置超时

时间:2016-04-15 07:25:20

标签: java hibernate jpa settimeout

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

3 个答案:

答案 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);