【问题标题】:HQL select range of resultsHQL 选择结果范围
【发布时间】:2011-12-11 11:52:22
【问题描述】:

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

假设 products 是一个包含 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)");

【问题讨论】:

    标签: java hibernate jakarta-ee hql


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我真的应该能够找到。假设它将成为 HQL 字符串的一部分
    【解决方案2】:

    查看javadoc of Query 中的setFirstResultsetMaxResults

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

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      相关资源
      最近更新 更多