【发布时间】:2011-04-30 03:31:42
【问题描述】:
我想将此更新查询限制为仅更新 5 行:
Query updateQuery = em.createQuery("update Entity e SET e.myVar = 1");
updateQuery.setMaxResults(5).executeUpdate();
setMaxResults 似乎没有完成这项工作。我怎样才能在 jpql 中做到这一点?
【问题讨论】:
我想将此更新查询限制为仅更新 5 行:
Query updateQuery = em.createQuery("update Entity e SET e.myVar = 1");
updateQuery.setMaxResults(5).executeUpdate();
setMaxResults 似乎没有完成这项工作。我怎样才能在 jpql 中做到这一点?
【问题讨论】:
如果可移植性不是问题,那么您可以使用特定于数据库的本机查询。
甲骨文: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 查询中的结果数。
尚未提及您使用的是哪个数据库。提供的示例代码可能会对您有所帮助,请进行相应的更改。
【讨论】: