私はGrailsの1.3.6を実行していると私はこのコードを持っている:Grails HQL executeUpdate()でLIMITを動作させるには?
String hql = '''
UPDATE
ApiResponse a
SET
a.lockId = :lockId
WHERE
a.lockId = 0
ORDER BY
a.dateAdded asc
LIMIT 5
'''
ApiResponse.executeUpdate(hql, [lockId : workerId])
このコードは、DB内のすべての行の代わりに、5つの最も古いエントリを更新しているようです。これはLIMITがHQLで動作していないことを意味しますか? GORMまたはHQLで同じSQLロジックを実現する方法を教えてください。基本的には、LIMITを使用して一括更新する必要があります。
私は限界が選択のためだけであると信じています。あなたの回避策が唯一の方法だと思います。しかし、IDのリストを作成するためにすべての行を繰り返し処理するのが非常に遅いのを見て、これをより効率的にする方法があるはずです。 hqlの詳細はこちらhttp://grails.asia/grails-tutorial-for-beginners-html-queries – JavaDev