想用HQL只获取5条记录

时间:2011-05-18 08:41:43

标签: hibernate spring hql

  

可能重复:
  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 下达的订单列表。用户可以在DB中放置0到5000+个订单。但我想只显示前5 条记录(订单)。我正在使用java List的子列表功能。

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

3 个答案:

答案 0 :(得分:17)

您可以在运行查询之前通过调用查询对象上的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中处理。

答案 1 :(得分:4)

答案 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();