我有一个包含许多可行任务实体的任务列表实体,并且某些任务可以“关闭”任务列表。
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)
}
我的问题是当用户在更新任务列表实体时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]
如何避免此版本冲突?