【问题标题】:Want to fetch only 5 records with HQL [duplicate]只想使用 HQL 获取 5 条记录 [重复]
【发布时间】:2011-08-27 20:57:08
【问题描述】:

可能重复:
How do you do a limit query in HQL

我是 HQL 的新手。我有以下工作 HQL 查询:

from Order as o where o.account.profile.userId='abc' order by o.orderID desc

此查询返回用户 abc 下的订单列表。用户可以在数据库中放置 0 到 5000+ 个订单。但我只想显示 前 5 条记录(订单)。我正在使用java List的子列表功能。

我可以使用 HQL 查询直接获取前 5 条记录吗?编写此查询的哪种方式更有效?

【问题讨论】:

    标签: hibernate spring hql


    【解决方案1】:

    您可以通过在运行查询之前调用查询对象上的setFirstResult()setMaxResults() 函数来限制查询返回的结果。像这样:

    Query query = session.createQuery("from Order as o where o.account.profile.userId='abc' order by o.orderID desc");
    query.setFirstResult(0);
    query.setMaxResults(5); 
    List result = query.list();
    

    这取决于您使用的 DBMS 是否会直接在 DBMS 中处理。

    【讨论】:

    • 我想在 hql 中做这个。我不知道在 HQL 中是否可行
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      直接来自http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-examples

      Query q = s.createFilter( collection, "" ); // the trivial filter
      q.setMaxResults(PAGE_SIZE);
      q.setFirstResult(PAGE_SIZE * pageNumber);
      List page = q.list();
      

      【讨论】:

        猜你喜欢
        • 2015-11-30
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多