我有以下问题。我得到了一个由 Java 中的 JPA/Hibernate 生成的数据库模式。我有一个用于继承层次结构的表。为此,Hibernate 使用 DTYPE 列来区分层次结构中类的具体实现。
我现在需要将相同的层次结构加载到 GRAILS 域对象。但是 GRAILS 使用名为“类”的列来保存具体实现的名称,我无法找到任何方法来更改此映射。所以我的问题是:有没有办法将 GRAILS 的“类”列映射到 Hibernate 的 DTYPE 列?
我有以下问题。我得到了一个由 Java 中的 JPA/Hibernate 生成的数据库模式。我有一个用于继承层次结构的表。为此,Hibernate 使用 DTYPE 列来区分层次结构中类的具体实现。
我现在需要将相同的层次结构加载到 GRAILS 域对象。但是 GRAILS 使用名为“类”的列来保存具体实现的名称,我无法找到任何方法来更改此映射。所以我的问题是:有没有办法将 GRAILS 的“类”列映射到 Hibernate 的 DTYPE 列?
您可以自定义用于基类mapping
闭包中的鉴别器列的名称。
class TopOfTheHierarchy {
…
static mapping = {
discriminator column: "DTYPE"
}
}
要使用类名以外的其他内容作为鉴别器值,您可以为每个子类使用类似的映射条目
class ChildClass {
…
static mapping = {
discriminator "child"
}
}
如果你已经有一个数据库模式,你可以尝试使用Grails 数据库逆向工程插件从你的模式生成你的 Grails 域类。