在Grails中有类似onLoad()的域类吗?

时间:2011-09-17 07:12:09

标签: grails gorm

各位,

我有以下域类:

class Product { 
    String name, 
    String productRecord,

    static transients = ['productRecord']
}

productRecord是一个根据Product实例的id自动生成的字段。

所以我一直在想,是否有一个地方会在加载域实例时自动调用以生成productRecord数字?

最好的方法是什么?

2 个答案:

答案 0 :(得分:7)

您可以利用built-in Domain Events

  

GORM支持将事件注册为被触发的方法   当发生某些事件时,例如删除,插入和更新。该   以下是支持的事件列表:

     
      
  • beforeInsert - 在对象最初持久化之前执行   数据库
  •   
  • beforeUpdate - 在更新对象之前执行
  •   
  • beforeDelete - 在删除对象之前执行
  •   
  • beforeValidate - 在验证对象之前执行
  •   
  • afterInsert - 在对象持久保存到数据库后执行
  •   
  • afterUpdate - 在对象更新后执行
  •   
  • afterDelete - 删除对象后执行
  •   
  • onLoad - 从数据库加载对象时执行
  •   

查看一些示例的文档。

答案 1 :(得分:3)

通常,这是通过创建只读getter方法并将生成逻辑放在那里来完成的。例如:

class Product { 
    String name, 
    String getProductRecord{ "Record " + id },

    static transients = ['productRecord']
}

另一个例子是here