3

悲観的ロックを行うには、次のようにできると書かれている grails のドキュメントに従いました。

def plan = Plan.findWhere(user:user, [lock: true])

これにより、保存が完了するまで計画インスタンスがロックされます。私の場合、次のように複数の計画を一度にロックしたいと考えています。

def plan = Plan.findAllWhere(user:user, [lock: true])

私はデフォルトでトランザクションであるgrailsサービスでこれを行っていますが、上記の行は期待どおりに機能していません.すべての行をロックせずstale state exception、同時トランザクションが実行されるとスローします.

読み取り時に複数の行をロックするにはどうすればよいですか?

詳細については、関連する質問を参照してください:データベースの古い状態の例外が発生する grails の同時トランザクション

4

1 に答える 1

-1

あなたは私のために働くこのようなことをすることができます:

Process.withNewTransaction {
    def process = Process.get(job.process.id)
    process.lock()
    process.sessionId = 0
    process.processId = 0
    process.save(flush:true)    
}
于 2013-11-22T14:50:33.153 に答える