Grails 域类继承:配置类列



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

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

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

我认为你需要的是类的鉴别器。

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

您可以像这样映射它:

class PodCast extends Content {
    …
    static mapping = {
        discriminator "audio"
    }
}

查看此文档,它为您提供了更多选项来更详细地自定义它

http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html

最新更新