休眠前 N 行 HQL 查询
Posted
技术标签:
【中文标题】休眠前 N 行 HQL 查询【英文标题】:hibernate top N rows HQL query 【发布时间】:2011-05-24 02:42:14 【问题描述】:我正在使用以下代码通过 Hibernate 执行 HQL 查询:
String myHqlQuery = "select from MyTable where Something = ? order by SomeVal";
// Set bind values ...
getHibernateTemplate().find(myHqlQuery, bindParams);
现在,我想从表格中选择前 N 行。我知道 mysql 有 HQL 中没有的 LIMIT 关键字。我也知道 Hibernate 有 setMaxResults()
方法,你可以在 Query
对象上运行。
我的问题是 - 有没有办法添加“限制”约束而不必过多地更改我的代码(即通过 HibernateTemplate 对象执行查询)?
【问题讨论】:
How do you do a limit query in HQL的可能重复 【参考方案1】:下面的代码对我有用
HibernateTemplate ht = getHibernateTemplate();
ht.setMaxResults(10);
List<Object> obj= ht.findByNamedQueryAndNamedParam("namedQuery",
new String[] "parameter1" ,
new Object[] parameter1 );
所以我认为你应该能够做到:
String myHqlQuery = "select from MyTable where Something = ? order by SomeVal";
// Set bind values ...
HibernateTemplate ht = getHibernateTemplate();
ht.setMaxResults(10);
ht.find(myHqlQuery, bindParams);
【讨论】:
【参考方案2】:使用
org.springframework.data.domain.Pageable
int numberOfItems = 10;
Pageable pageableTop = new PageRequest(0, numberOfItems);
yourRepository.findYourEntity(pageableTop);
【讨论】:
以上是关于休眠前 N 行 HQL 查询的主要内容,如果未能解决你的问题,请参考以下文章