コントローラ ロジック:
def updateObject() {
Object o = Object.get(params.id as Long)
o.otherObjects.clear()
objectDataService.saveObject(o.id)
OtherObject newObject = new OtherObject;
o.addToOtherObjects(newObject)
objectDataService.saveObject(o.id)
}
サービスロジック
def saveObject(long profileId) {
o.save(flush:true)
}
何が起こるのですか
90% の場合、これで問題なく動作します。
問題
ERROR errors.GrailsExceptionResolver - StaleObjectStateException occurred when processing request: [GET] /controller/updateObject - parameters:
stuff[]: data
Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [com.path.Object#1].
Stacktrace follows:
Message: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [com.path.Object#1]
関連する質問を読み、merge
上記の通話を見つけました。それはケースの約 50% を解決しましたが、すべてではありませんでした。