hibernate前N行HQL查询

发布于 2024-10-07 04:33:07 字数 435 浏览 0 评论 0原文

我正在使用以下代码通过 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 对象执行查询)?

I am using the following code to execute an HQL query with Hibernate:

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

Now, I want to select the top N rows from the table. I know mySql has the LIMIT keyword which is not available in HQL. I also know that Hibernate has the setMaxResults() method you can run on a Query object.

My question is - is there any way to add the "limit" constraint without have to change my code too much (i.e. executing the query via a HibernateTemplate object)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灼痛 2024-10-14 04:33:07

下面的代码对我有用

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

The below code works for me

    HibernateTemplate ht = getHibernateTemplate();
    ht.setMaxResults(10);
    List<Object> obj= ht.findByNamedQueryAndNamedParam("namedQuery",
            new String[] { "parameter1" },
            new Object[] { parameter1 });

So I think you should be able to do:

String myHqlQuery = "select from MyTable where Something = ? order by SomeVal";

// Set bind values ...

HibernateTemplate ht = getHibernateTemplate();

ht.setMaxResults(10);

ht.find(myHqlQuery, bindParams);
定格我的天空 2024-10-14 04:33:07

使用

org.springframework.data.domain.Pageable

int numberOfItems = 10;

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

use

org.springframework.data.domain.Pageable

int numberOfItems = 10;

Pageable pageableTop = new PageRequest(0, numberOfItems);
yourRepository.findYourEntity(pageableTop);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文