grails - 在 AfterInsert/AfterUpdate 中修改对象

标签 grails grails-orm

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

我正在尝试使用 afterInsert(首先确保计算正确)和 afterUpdate 来做到这一点。

然而,由于我的计算试图修改对象本身,它不起作用 - 抛出各种休眠异常。

我试图将 afterUpdate 代码放入一个事务中,但这没有帮助。恐怕我在这里遇到了循环依赖问题。

我现在得到的异常(exception)是:

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [esc.scorecard.PropertyScorecard#27]

GORM 事件是为更简单的用例设计的吗?我很想得出结论,修改您正在保存的对象不是要走的路。

最佳答案

您使用的是 1.2.0+ 吗?

如果是,您可以在事件闭包中使用 .withNewSession 来避免休眠困惑。

干杯

关于grails - 在 AfterInsert/AfterUpdate 中修改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382573/

相关文章:

grails - Grails:使用运行脚本填充H2数据库

Grails RabbitMQ native 过滤发送给消费者的消息

grails - grails3中有关UrlMappings的解释

spring - 带有备用数据源的 Grails 'withTransaction'

grails - 如果一个域保存失败,我如何回滚所有事务?

hibernate - 将 Grails 域类映射到 joinTable 的问题

hibernate - 用 Grails 动态查找器匹配 hasMany children

css - 如何在 gsp grails 中动态更改左/下人字形

mongodb - 在 Grails 中使用 MongoDB GORM 插件时是否应该触发事件监听器?

grails - 使用数据绑定(bind)更新多对多关系时索引超出范围