我有一个域对象,它根据属于同一域对象的参数保存计算结果。我想确保用户更改任何时间参数,它会重新计算并正确保存到数据库中。
我正在尝试使用afterInsert(以确保计算首先是正确的)和afterUpdate。
但是,由于我的计算是试图修改对象本身,它不起作用 - 抛出各种hibernate异常。
我尝试将afterUpdate代码放入事务中,但这没有帮助。我恐怕在这里遇到循环依赖问题。
我现在得到的例外是:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [esc.scorecard.PropertyScorecard#27]
GORM活动是否针对更简单的用例而设计?我很想得出结论,修改你正在保存的对象是不可取的。
答案 0 :(得分:3)
您使用的是1.2.0 +?
如果你是,你可以在事件闭包中使用.withNewSession来避免休眠混乱。
欢呼声
利
答案 1 :(得分:2)
是否有任何理由反对使用beforeInsert
和beforeUpdate
代替afterInsert
和afterUpdate
?
如果没有,切换到before*
事件处理程序应解决您的问题