我想将@Version like列更新为应用程序管理的悲观锁。
以下是我要采取的步骤:
如何编写更新列的JPQL或HSQL查询,但将其自身限制为固定数量的记录?
答案 0 :(得分:3)
一个人不能。实际上,除非有人正在使用支持update ... limit X
表示法的RDBMS,否则不能在SQL中编写这样的查询 - 并非所有RDBMS都这样做。
可能的解决方法是:
limit
或更确切地说,setMaxResults()
)并在同一交易中逐一更新它们。setMaxResults()
和setFirstResult()
)并使用entity.pk <= :pk
条件执行批量更新。这假设您可以通过PK订购选择查询。答案 1 :(得分:0)
使用最新版本的HSQLDB,您可以:
UPDATE atable SET ... WHERE ROWNUM() <=50 [AND ...]
使用版本2.3.3,您可以:
UPDATE atable SET ... WHERE ... LIMIT 50