我想限制这个更新查询只更新 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/