在过去的许多项目中,我使用this JPA / Hibernate方法为系统添加审计功能。它非常有效且不引人注目。
是否有Grails @MappedSuperclass替代(缺少Java中的域模型对象而不是Groovy)?如何在没有为其创建表的情况下,在每子类表方法中声明父类?我已经阅读了GORM文档(5.2.3 Inheritance in GORM),但除了每个层次表和每个子类的表讨论之外,我没有找到有关如何执行此操作的任何详细信息。
或者,在Grails中实现此类审核的推荐方法是什么?
答案 0 :(得分:4)
好的,做了一点搜索,我回答了我自己的问题:)
基本上,它就像将MappedSuperclass声明为abstract一样简单,而grails不会为它创建表。我通过re-reading the manual实现了(RTFM基本上......创造了奇迹):“GORM支持从抽象基类和具体的持久GORM实体继承。”即具体类是持久的,所以抽象类不是。请仔细阅读。
E.g。
abstract class Auditable {
Date dateCreated
Date lastUpdated
}
class Book extends Auditable {
String title
String description
}
只会创建书籍表,它将具有
DATE_CREATED
和
LAST_UPDATED
列。此外,作为额外的奖励,Grails的dateCreated和lastUpdated属性为auto time-stamped。
希望这有助于其他人。