2011-12-11 48 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关联,则不是。