如何设置hibernate查询的限制

时间:2013-07-18 23:24:21

标签: hql

如何设置此hql查询的限制?当我在查询中添加limit关键字时,会抛出错误。

 @Query("from voucher v where  v.voucherType.typeDescription = :typeDescription and v.denomination = :denomination")
 public List<Voucher> findByVoucherTypeAndDenomination(@Param("typeDescription") String typeDescription,@Param("denomination") BigDecimal denomination);

3 个答案:

答案 0 :(得分:14)

当您致电查询时,请添加以下内容:

.setFirstResult(firstResult).setMaxResults(limit);

<强>更新

文档:
http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/Query.html#setMaxResults(int)

如果使用entityManager,它可以是:

entityManager.createQuery("yourQuery").setFirstResult(0).setMaxResults(5);

答案 1 :(得分:3)

您可以使用Query对象的两种方法。

  

setFirstResult()共用

     

setMaxResults()

但你不能在HQL中使用它,因为限制是数据库供应商依赖的,所以hibernate不允许它通过hql查询

答案 2 :(得分:1)

在HQL中,Limit永远不是受支持的子句。您应该使用setMaxResults()。