Grails域类继承:配置类列

Grails域类继承:配置类列,grails,inheritance,Grails,Inheritance,我在Grails应用程序的域类中使用继承。显然,继承向我的数据库添加了一个“类”列。“类”列的内容是域类的完全限定名,例如com.myapp.MyClass 现在,如果我进行了一些重构,并且类名不再是com.myapp.MyClass,而是com.myapp.mypackage.MyClass,那么数据库仍然包含旧的类名,该类名现在不再存在于应用程序中 有没有办法配置放在“类”列中的字符串?类似于类的另一个唯一标识符,然后映射到Grails配置中的类名或类似的东西?我认为您需要的是类的鉴别器 默

我在Grails应用程序的域类中使用继承。显然,继承向我的数据库添加了一个“类”列。“类”列的内容是域类的完全限定名,例如
com.myapp.MyClass

现在,如果我进行了一些重构,并且类名不再是
com.myapp.MyClass
,而是
com.myapp.mypackage.MyClass
,那么数据库仍然包含旧的类名,该类名现在不再存在于应用程序中


有没有办法配置放在“类”列中的字符串?类似于类的另一个唯一标识符,然后映射到Grails配置中的类名或类似的东西?

我认为您需要的是类的鉴别器

默认情况下,映射继承时,Grails使用单表模型 其中所有类共享同一个表。使用鉴别器列 要确定每行的类型,默认情况下使用完整的类名

您可以这样映射它:

class PodCast extends Content {
    …
    static mapping = {
        discriminator "audio"
    }
}
查看此文档,它为您提供了更多选项,可以对其进行更详细的自定义


非常感谢,这正是我需要的。我不知道为什么我自己没有在文档中找到它……:)