我正在将 Hibernate Envers 添加到我的 Grails 3 项目中。我注意到对于我的一个实体,它有一个onLoad()
事件,该onLoad()
事件永远不会为 Envers 修订实体调用。
如何确保始终调用此代码,即使对于此实体的历史修订也是如此?
用例:
我正在使用 Grails 3 JSON 视图开发 RESTful 服务。我的一个域类有一个鉴别器列,它也必须在 JSON 输出中呈现,以便消费者知道它是什么类型。出于这个原因,域实体定义了一个onLoad()
方法来填充与鉴别器类型匹配的瞬态属性:
class MyChildDomainClass extends MyBaseDomainClass {
void onLoad() {
valueType = ValueType.STRING
}
static mapping = {
discriminator value: ValueType.STRING
}
}
这适用于普通域实例,但是当我从 Envers' 查找实体修订时AuditQueryCreator
,审计查询没有调用该onLoad()
方法。
似乎我可以遍历结果并手动调用onLoad()
,但我希望有更好的方法来解决这个问题。
提前致谢!