beforeUpdate afterUpdate

时间:2012-03-09 12:17:44

标签: grails event-triggers

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

和另一个问题:

  

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

     

def afterUpdate = {log.info(“afterUpdate”+ this.status)}

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

2 个答案:

答案 0 :(得分:3)

更改属性时没有事件,但您可以添加一个显式的setter来执行某些操作:

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

答案 1 :(得分:0)

您可能需要查看Grails审核插件:Audit LoggingAudit Trail