データベースオブジェクトを検索してロックしてから、自動的にロックを解除するGroovy/Grails 3関数を記述しようとしています。Grailsトランザクションでロックを解放するのを待ちます。
関数が複数回呼び出された場合は、ロックが解放されるまで待機してから更新プログラムを実行する必要があります。どうすればこれを達成できますか? Hibernateセッションは、トランザクションを完了し、データベース・レベルでのロックを解除する必要がありフラッシング
def updateUser(String name) {
User u = User.get(1)
// if locked, wait until released somehow?
u.lock()
u.name = name
u.save()
}
updateUser('bob')
updateUser('fred') // sees lock from previous call, waits until released, then updates
あなたが必要です.NewTransaction最近の回答が見つかりませんでした。ここに古いものがありますhttp://stackoverflow.com/questions/21805893/handling-grails-transactions-programatically。ロックレコードを気にする必要はないと思う。 。WithNewTransactionの周りにそれをラップします。これはまた、あなたが直後にそれを問い合わせる場合、同じことをする必要があるかもしれないことを意味します... – Vahid