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

标签 java jpql

我想限制这个更新查询只更新 5 行:

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

setMaxResults 似乎没有完成这项工作。我如何在 jpql 中执行此操作?

最佳答案

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

  • 甲骨文: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查询的结果数。

没有提到您使用的是哪个数据库。提供的示例代码可能对您有所帮助,请相应地进行更改。

关于java - 如何限制在 JPQL 查询中更新的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170111/

相关文章:

java - 缺少返回语句 - int[]

java - 无法调整 JPanel 中列表的大小

java - Spring Batch Integration 远程分块错误 - 消息包含错误的作业实例 ID [25] 应该是 [24]

java - Spring Data JPA @Query 注解的问题(SQL 语法错误)

java - 没有关系实体的 JPA 存储库选择

Java类引用类的加载机制

java - 从字符串中删除斜体和粗体 html 标签?

java - Google App Engine - 删除 JPQL 查询和级联

java - 如何在jpql中选择列表元素的属性

jpa - 在构造函数表达式中使用 SELECT ... AS 时,EclipseLink 抛出 JPQLException