我有一个场景,其中两个动作更新了一个Domain对象。有时基于时间,两个动作同时(几乎)被调用,并且它们获取的域对象包含相同的版本号。现在,其中一个操作将首先更新域对象,当另一个操作更新时,应该会出现错误,因为首先更新对象的操作必须增加版本号,因此它应该抛出staleObjectException。但在我的情况下,对象成功更新,没有异常被抛出。只是想知道为什么?
以下是再现的场景(有时基于点击时间)
// Gets called at a regular interval via ajax call
updateTime(){
DomainA obj = DomainA.get(id)
println obj.version // prints 5
obj.setSomeProperty(value)
obj.save(failOnError:true)
}
// Gets called on a click of a button(Normal request)
pause(){
DomainA obj = DomainA.get(sameid)
println obj.version // prints 5
obj.setSomeProperty(value)
obj.save(failOnError:true)
}