hibernate前N行HQL查询

时间:2010-12-12 00:03:38

标签: mysql hibernate spring hql

我使用以下代码用Hibernate执行HQL查询:

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

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

我的问题是 - 有没有办法添加“限制”约束而不必过多地改变我的代码(即通过HibernateTemplate对象执行查询)?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

使用

  

org.springframework.data.domain.Pageable

int numberOfItems = 10;

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