2016-04-15 284 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提供程序或另一個。