【问题标题】:hibernate top N rows HQL query休眠前 N 行 HQL 查询
【发布时间】: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 对象执行查询)?

【问题讨论】:

标签: mysql hibernate spring 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多