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

时间:2011-03-02 16:02:11

标签: java jpql

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

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

setMaxResults似乎没有做到这一点。我怎么能在jpql中做到这一点?

1 个答案:

答案 0 :(得分:2)

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

  • 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 &amp; LIMIT 用于限制查询Oracle和Oracle的结果数量。分别是MySql。

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