修改AfterInsert/AfterUpdate中的对象

Jea*_*ash 5 grails grails-orm

我有一个域对象,它包含基于同一域对象属性的参数的计算结果.我想确保用户更改任何时间参数,它会重新计算并正确保存到数据库中.

我试图用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]
Run Code Online (Sandbox Code Playgroud)

GORM活动是否针对更简单的用例而设计?我很想得出结论,修改你正在保存的对象是不可取的.

fab*_*474 2

有什么理由反对使用beforeInsertandbeforeUpdate代替afterInsertand吗afterUpdate

如果没有,切换到before*事件处理程序应该可以解决您的问题