我在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