2010-12-12 69 views
2

我使用下面的代码与Hibernate来执行一个HQL查询:顶部冬眠N行HQL查询

String myHqlQuery = "select from MyTable where Something = ? order by SomeVal"; 
// Set bind values ... 
getHibernateTemplate().find(myHqlQuery, bindParams); 

现在,我要选择从表中的前N行。我知道mySql具有HQL中不可用的LIMIT关键字。我也知道Hibernate有方法可以在Query对象上运行。

我的问题是 - 是否有任何方法来添加“限制”约束,而不必更改我的代码太多(即通过HibernateTemplate对象执行查询)?

+1

可能重复的[你如何在HQL中进行限制查询](http://stackoverflow.com/questions/1239723/how-do-you-do-a-limit-query-in-hql) – hvgotcodes 2010-12-12 00:05:38

+0

你的正确..谢谢..这个问题可以被关闭,然后我猜..当然,实际上直接与HQL直接做到这一点。 – kli 2010-12-12 00:20:22

回答

2

下面的代码对我的作品

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); 
0

使用

org.springframework.data.domain.Pageable

int numberOfItems = 10; 

Pageable pageableTop = new PageRequest(0, numberOfItems); 
yourRepository.findYourEntity(pageableTop);