Grails 中的 MappedSuperclass 替代方案

gst*_*his 3 grails jpa auditing

在过去的许多项目中,我使用这种JPA/Hibernate 方法为系统添加审计功能。它非常有效且不引人注目。

是否有 Grails @MappedSuperclass 替代方案(缺少用 Java 而不是 Groovy 编码域模型对象)?如何在没有为其创建表的情况下在每个子类的表方法中声明父类?我已经阅读了 GORM 文档(GORM 中的5.2.3 继承),但除了每个层次表与每个子类表的讨论之外,我没有找到有关如何执行此操作的任何详细信息。

或者,在 Grails 中实现此类审计的推荐方法是什么?

gst*_*his 5

好的,做了更多的搜索,我回答了我自己的问题:)

本质上,它就像将 MappedSuperclass 声明为抽象类一样简单,而 grails 不会为其创建表。我通过重新阅读手册(RTFM 基本上......创造奇迹)意识到:“GORM 支持从抽象基类和具体持久 GORM 实体的继承。” 即具体类是持久的,所以抽象类不是。付费阅读更仔细。

例如

abstract class Auditable {
    Date dateCreated
    Date lastUpdated
}

class Book extends Auditable {
    String title
    String description
}
Run Code Online (Sandbox Code Playgroud)

只会创建 book 表,它将具有

创建日期

最近更新时间

列。此外,作为额外的奖励,Grails会自动为 dateCreated 和 lastUpdated 属性添加时间戳

希望这对其他人有帮助。