hibernate - 在grails中,为什么刷新后直接得到StaleObjectStateException?

标签 hibernate exception data-binding grails staleobjectstate

我得到这样的代码:

def myObject = MyDomainClass.get(myId)
myObject.refresh()
myObject.myProperty = myValue
myObject.save(flush:true, failOnError:true)

尽管进行了获取和刷新,但执行保存时,有时仍会收到“org.hibernate.StaleObjectStateException:行已由另一个事务更新或删除(或未保存的值映射不正确)”。

当我开始在多个 session 中同时执行此方法时,就会发生这种情况。但是然后事务1的肯定完成,此代码再次针对事务2执行,并且仍然失败! (当事务由于乐观锁定而失败时,我正在使用事务服务重新执行事务,请参阅here)。

尽管从数据库中获得了"new"版本,那怎么办?

最佳答案

This forum thread提示您可能需要另一个Hibernate Session。如果您尝试进行新交易以进行新交易该怎么办?

Book.withNewSession{}

关于hibernate - 在grails中,为什么刷新后直接得到StaleObjectStateException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386054/

相关文章:

android - 如何使用数据绑定(bind)从 xml 调用 Edittext onEditorAction

功能区控件的 WPF 数据绑定(bind)

java - 如何在Hibernate中映射这种关系?

java - 使用 Glassfish 4.1 hibernate

java - InputStream 未检测到何时在另一侧关闭了输出流和套接字

c# - 为什么我得到 PingException?

Ruby - 正确处理空对象

java - hibernate 中的 BLOB

hibernate - 限制 JPA/Hibernate 中列表获取数据的首选方法是什么?

.net - 将 WPF Canvas 子项绑定(bind)到 ObservableCollection