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)

ただし、FETCH FIRST n ROWS ONLYは JPQL ではサポートされていないようです。

これを行うために存在する他の選択肢は何ですか?

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 に答える