FETCH首先只使用Java持久性查询语言在子查询中行

时间:2012-05-30 20:24:56

标签: java jpa db2 jpql

我正在尝试使用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

有什么其他替代方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

无法在JPQL中执行此类查询。你必须使用SQL。

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

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

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

我觉得获取查询的第5行并不具有任何order by子句会很奇怪。