0

我正在尝试使用 Java Persistence Query Language 对 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 ONLY 。

有哪些其他选择可以做到这一点?

4

1 回答 1

4

在 JPQL 中无法执行这样的查询。您必须使用 SQL。

或者您可以执行以下查询:

SELECT a FROM Account a WHERE a.Status = '' AND a.Type = :type

setMaxResults(5)在执行查询之前调用。结果,您将获得 5 个帐户(最多),您可以更改 5 个返回帐户的状态、代码和时间戳。

不过,我发现获取没有任何order by子句的查询的前 5 行很奇怪。

于 2012-05-30T20:55:34.780 回答