次のようなコードを取得しました。
def myObject = MyDomainClass.get(myId)
myObject.refresh()
myObject.myProperty = myValue
myObject.save(flush:true, failOnError:true)
取得と更新にもかかわらず、保存の実行時に「org.hibernate.StaleObjectStateException: 別のトランザクションによって行が更新または削除されました (または未保存値のマッピングが正しくありませんでした)」というメッセージが表示されることがあります。
このメソッドを複数のセッションで同時に実行し始めると発生します。しかし、その後、トランザクション 1 は確実に終了し、このコードはトランザクション 2 に対して再度実行されますが、それでも失敗します! (トランザクション サービスを使用して、楽観的ロックが原因でトランザクションが失敗したときにトランザクションを再実行しています。こちらを参照してください)。
DB から「新しい」バージョンを取得しても、どうすればよいのでしょうか?