如何限制 JPQL 查询中更新的行数?
我想将此更新查询限制为仅更新 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果可移植性不是问题,那么您可以使用数据库特定的本机查询。
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.