各位,
我有以下域类:
class Product {
String name,
String productRecord,
static transients = ['productRecord']
}
productRecord是一个根据Product实例的id自动生成的字段。
所以我一直在想,是否有一个地方会在加载域实例时自动调用以生成productRecord数字?
最好的方法是什么?
答案 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。