3

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

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

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

4

1 回答 1

5

本质上,它就像声明 as 一样简单MappedSuperclassabstractGrails 不会为它创建表。我通过重新阅读手册意识到:

GORM 支持从抽象基类和具体的持久 GORM 实体继承。即具体类是持久的,所以抽象类不是。更仔细地阅读是值得的。

例如

abstract class Auditable {
    Date dateCreated
    Date lastUpdated
}

class Book extends Auditable {
    String title
    String description
}

只有 book 表将被创建,它会有date_createdlast_updated列。此外,作为一个额外的好处,dateCreatedlastUpdated属性由 Grails自动时间戳。

于 2008-12-06T21:29:20.150 回答