テーブルの行をロックしようとすると、null が返されることがあります。どういう意味ですか?ロック前にドメイン インスタンスが null ではないことを確認します。
println state
state = State.lock(state.id)
println state
これは以下を出力します:
State 1
null
(「状態 1」は状態の文字列表現です)
テーブルの行をロックしようとすると、null が返されることがあります。どういう意味ですか?ロック前にドメイン インスタンスが null ではないことを確認します。
println state
state = State.lock(state.id)
println state
これは以下を出力します:
State 1
null
(「状態 1」は状態の文字列表現です)
これを行うことで、ロックが解除されるまで読み取り操作がブロックされることを意味する悲観的ロックによって、GORM 楽観的ロック ( update の前にオブジェクトのバージョンを比較する) から切り替えることができます。値を取得する場合は、以下のクロージャーを使用します (メソッド returnValue を参照)。
State.withPessimisticLock(state.id) { Object lockedDomain ->
return "OK"
}.onNotFound { ->
return "NG"
}
assert result.returnValue == "OK"
ちなみに、トランザクションが必要なので、null
質問で返された which は、おそらくオブジェクトがトランザクションから外れていることを意味します。