【问题标题】:MappedSuperclass Alternatives in GrailsGrails 中的 MappedSuperclass 替代方案
【发布时间】:2021-09-27 15:17:57
【问题描述】:

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

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

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

【问题讨论】:

  • 是的,出于某种原因,这在 Grails 2 中不再起作用,抽象类有自己的表定义吗?已在 Grails 论坛上询问过,但似乎没有人知道为什么会更改此设置。有人知道原因或知道解决方法或设置吗?

标签: grails jpa auditing


【解决方案1】:

本质上,就像将MappedSuperclass 声明为abstract 一样简单,Grails 不会为其创建表。我通过re-reading the manual意识到:

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

例如

abstract class Auditable {
    Date dateCreated
    Date lastUpdated
}

class Book extends Auditable {
    String title
    String description
}

只会创建 book 表,并且它会有 date_createdlast_updated 列。此外,作为额外的奖励,dateCreatedlastUpdated 属性是 Grails 的 auto time-stamped

【讨论】:

  • @HussainFakhruddin 你的意思是 2.x 对吧?我们使用的是 2.5.4
猜你喜欢
  • 2012-03-31
  • 2015-08-15
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2015-03-03
  • 2015-09-25
相关资源
最近更新 更多