如何在 GROM 中的 GRAILS 类列和 Hibernate 的 DTYPE 列之间进行转换



我有以下问题。我得到了一个由 JPA/Hibernate 在 Java 中生成的数据库模式。我有一个用于继承层次结构的表。为此,Hibernate使用DTYPE列来区分我的层次结构中类的具体实现。

我现在需要将相同的层次结构加载到 GRAILS 域对象中。但是,GRAILS 使用名为"class"的列来保存具体实现的名称,我找不到任何方法来更改此映射。所以我的问题是:有没有办法将GRAILS的"类"列映射到Hibernate的DTYPE列?

您可以自定义基类mapping闭包中用于鉴别器列的名称。

class TopOfTheHierarchy {
  …
  static mapping = {
    discriminator column: "DTYPE"
  }
}

要使用类名以外的其他内容作为鉴别器,请为每个子类使用类似的映射条目

class ChildClass {
  …
  static mapping = {
    discriminator "child"
  }
}

如果你已经有一个数据库模式,你可以尝试使用Grails数据库逆向工程插件从你的模式生成你的Grails域类。

最新更新