如何限制 JPQL 查询中更新的行数?

发布于 2024-10-20 02:58:12 字数 236 浏览 2 评论 0原文

我想将此更新查询限制为仅更新 5 行:

Query updateQuery = em.createQuery("update Entity e SET e.myVar = 1");
updateQuery.setMaxResults(5).executeUpdate();

setMaxResults 似乎无法完成这项工作。我怎样才能在 jpql 中做到这一点?

I want to limit this update query to only update 5 rows:

Query updateQuery = em.createQuery("update Entity e SET e.myVar = 1");
updateQuery.setMaxResults(5).executeUpdate();

setMaxResults does not seem to do the job. How can I do this in jpql?

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

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

发布评论

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

评论(1

随梦而飞# 2024-10-27 02:58:12

如果可移植性不是问题,那么您可以使用数据库特定的本机查询。

  • Oracle:em.createNativeQuery("update TableName SET myVar = 1 where id IN (SELECT id FROM TableName WHERE ROWNUM <= 5)").executeUpdate();

  • MySql : em .createNativeQuery("update TableName SET myVar = 1 where id IN (SELECT id FROM TableName LIMIT 5)").executeUpdate();

ROWNUM & LIMIT 用于限制 Oracle 查询中的结果数量。分别是MySql。

没有提到您正在使用哪个数据库。提供的示例代码可能会帮助您,进行相应的更改。

If portability is not a issue, then you can go for database specific native query.

  • Oracle : em.createNativeQuery("update TableName SET myVar = 1 where id IN (SELECT id FROM TableName WHERE ROWNUM <= 5)").executeUpdate();

  • MySql : em.createNativeQuery("update TableName SET myVar = 1 where id IN (SELECT id FROM TableName LIMIT 5)").executeUpdate();

ROWNUM & LIMIT are used to limit number of results in a query for Oracle & MySql respectively.

Haven't mentioned which database you are using. Provided sample-code might help you, make alterations accordingly.

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