2011-12-11 52 views
2

什麼是正確/有效的方式來從hibernate檢索結果的子集?HQL選擇範圍的結果

假設產品是包含3000條記錄的表格。

Session session = SessionFactorys.getSessionFactory().openSession(); 
Query query = session.createQuery("from products p"); 
List result = query.list().subList(30, 40);  
session.disconnect(); 

上面的代碼似乎不是非常有效的是有沒有更好的方法,我試圖找到類似的東西。

Query query = session.createQuery("from products p range(30,40)"); 

回答

3

使用query.setFirstResult()query.setMaxResults()但請注意,這當然取決於結果集的排序。

Query query = session.createQuery("from products p"); 
query.setFirstResult(30); 
query.setMaxResults(10); 
List result = query.list(); 
+0

謝謝我真的應該能夠找到那個。假設它將是HQL字符串的一部分 – user1055212

0

看在javadoc of QuerysetFirstResultsetMaxResults

請注意,這些應用於JDBC調用返回的行,而不是查詢返回的實體。一般來說,這是相同的。但是,如果您的查詢獲取* ToMany關聯,則不是。