我正在尝试使用Java持久性查询语言批量更新DB2表:
UPDATE Account a
SET a.Status = 'r', a.Code = :code, a.Timestamp = CURRENT_TIMESTAMP
WHERE ClientNumber IN (SELECT ClientNumber FROM Account
WHERE a.Status = '' AND a.Type = :type
ORDER BY a.Code ASC
FETCH FIRST 5 ROWS ONLY)
然而,JPQL中似乎不支持 FETCH FIRST n ROWS ON 。
有什么其他替代方法可以做到这一点?
答案 0 :(得分:3)
无法在JPQL中执行此类查询。你必须使用SQL。
或者您可以执行以下查询:
SELECT a FROM Account a WHERE a.Status = '' AND a.Type = :type
并在执行查询之前调用setMaxResults(5)
。结果会得到5个帐户(最多),您可以更改5个返回帐户的状态,代码和时间戳。
我觉得获取查询的第5行并不具有任何order by
子句会很奇怪。