HQL选择结果范围

时间:2011-12-11 11:52:23

标签: java hibernate java-ee hql

从hibernate中检索子结果集的正确/有效方法是什么?

假设产品是包含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)");

2 个答案:

答案 0 :(得分:3)

使用query.setFirstResult()query.setMaxResults()但请注意,这当然取决于结果集的排序。

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

答案 1 :(得分:0)

查看javadoc of Query中的setFirstResultsetMaxResults

请注意,这些应用于JDBC调用返回的行,而不是查询返回的实体。一般来说,这是等价的。但是,如果您的查询获取* ToMany关联,则不是这样。