3

我们有 beforeUpdateOf* (其中 * 是某个字段吗?)

还有一个问题:

def beforeUpdate= { log.info("in beforeUpdate " +this.status) }

def afterUpdate = { log.info("in afterUpdate" +this.status) }

这两者都给出了相同的状态。虽然 object(this) 的实际状态从 x 更新为 y

4

2 回答 2

3

更改属性时没有事件,但是您可以添加执行某些操作的显式设置器:

class MyDomainClass {
   String status

   void setStatus(String status) {
      this.status = status
      // do something based on changed value
   }
}

您在 中看到相同的值beforeUpdateafterUpdate因为这些回调用于 Hibernate 将更改的值保存到数据库时。在 Hibernate 开始和完成更新之间更改值是不寻常的。

如果您要从数据库中查找原始值,可以使用http://grails.org/doc/latest/ref/Domain%20Classes/getPersistentValue.html

于 2012-03-09T15:37:00.793 回答
0

您可能想看看 grails 审计插件:审计日志审计跟踪

于 2012-03-09T12:54:35.330 回答