我在Grails应用程序中的域类中使用继承。显然,继承会在我的数据库中添加一个“类”列。 “class”列的内容是Domain Class的完全限定名称,例如com.myapp.MyClass
。
现在,如果我进行了一些重构,并且类名不再是com.myapp.MyClass
,而是com.myapp.mypackage.MyClass
,然后数据库仍然包含应用程序中现在不再存在的旧类名。
有没有办法配置放在“class”列中的字符串?就像该类的另一个唯一标识符,然后映射到我的Grails配置中的类名或类似的东西?
答案 0 :(得分:1)
我认为你需要的是班上的鉴别者。
默认情况下,映射继承时Grails使用单表模型 其中所有类共享同一个表。使用鉴别器列 确定每一行的类型,默认为完整的类名。 ref
你可以这样映射:
class PodCast extends Content {
…
static mapping = {
discriminator "audio"
}
}
查看此文档,它为您提供了更多选项以更详细地自定义
http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html