【发布时间】:2014-06-08 14:18:07
【问题描述】:
我有以下
def save(ACommand command){
...
}
@Validateable
class ACommand implements Serializable
{
ADomainObject bundleDef
}
但每次调用 save 时版本都会增加。因此,如果我打开两个浏览器并连续提交不同的值,而不是像我预期的那样第二次出现错误,则值会更新。
我也尝试过使用两个不同的会话,没有区别
更新
如果我使用断点并在另一个完成之前提交它工作正常。但是,如果我让第一个完成然后提交第二个而不刷新,则版本会更新为较新的版本(我不想要)并且更改会通过。
更新 2
当您执行更新时,Hibernate 将自动检查版本属性与数据库中的版本列,如果它们不同,将抛出 StaleObjectException。如果事务处于活动状态,这将回滚事务。
per Grails 在我看来这应该可行。
【问题讨论】:
-
您能否展示一下保存实现,看看控制器中如何处理乐观锁定情况?否则代码 sn-p 没有多大意义,谢谢 :)
-
我正在使用 Grails 中的自动锁定功能,不确定您想看到什么?它只是从一个非常基本的东西中保存一个对象
标签: grails grails-orm optimistic-locking