我得到这样的代码:
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/