実行可能なタスクエンティティが多数あるTaskListエンティティがあり、特定のタスクでTaskListを「閉じる」ことができます。
class TaskList {
...
static hasMany = [
tasks: Task
]
}
class Task {
...
static belongsTo = [taskList: TaskList]
}
これで、タスクが更新され、タスクリストを「閉じる」ことができるTaskListService
ようになりました。closeList()
class TaskListService {
def closeList(TaskList taskList) {
taskList.status = "CLOSED"
taskList.save()
}
}
// TaskController pseudo-update
def update () {
Task taskInstance = Task.get(params.id)
//... do something with the taskInstance
taskListService.closeList(taskInstance.taskList)
}
私の問題は、ユーザーがTaskListエンティティをTaskListService
更新しているときにそれを更新するときです。
class TaskListController {
def update () {
TaskList taskListInstance = TaskList.get(params.id)
//... do some stuff
taskListInstance.properties = params
taskListInstance.save(flush:true)
}
}
org.hibernate.StaleObjectStateException:行が別のトランザクションによって更新または削除されました(または未保存の値のマッピングが正しくありませんでした):[com.giotta.TaskList#1]
このバージョンの競合を回避するにはどうすればよいですか?