大家好,以下是我有一个抽象类 AbstractProfile 和一个具体类 GoogleProfile 的情况
abstract class AbstractProfile {
.....
}
class GoogleProfile extends AbstractProfile {
......
}
我正在使用 grails,但 gorm 没有为 google 个人资料插入表格 当前 gorm 只为 AbstractProfile 类插入表格 请帮助提前谢谢
大家好,以下是我有一个抽象类 AbstractProfile 和一个具体类 GoogleProfile 的情况
abstract class AbstractProfile {
.....
}
class GoogleProfile extends AbstractProfile {
......
}
我正在使用 grails,但 gorm 没有为 google 个人资料插入表格 当前 gorm 只为 AbstractProfile 类插入表格 请帮助提前谢谢
你可以使用这个:
abstract class BaseDomain {
static mapping = {
tablePerConcreteClass true
id generator: 'increment'
version false
}
}
Grails 2.0 保留了抽象类。为了将单个表启用到扩展类,您需要指定:
static mapping = {
tablePerHierarchy false
}
到抽象类。否则,整个层次结构将“存在”在同一个表中。
跟进Михаил's great answer,有两件事对我有用。
这对我来说效果最好,因为基类和子类的约束都被应用了。子类中没有空列对我的用例很重要。但是,似乎只使用了子类中的映射块。
tablePerConcreteClass true
这里的一个优点是它允许在 BaseDomain 类中声明一个索引,然后该索引出现在每个子类表中,即使用来自基类和子类的映射块。似乎只使用了基类中的约束。
abstract class BaseDomain {
static mapping = {
tablePerHierarchy false // avoid creating the base_domain table
tablePerConcreteClass true
id generator: 'increment' // https://jira.grails.org/browse/GRAILS-10849
someColumnInBaseDomain index: true // index this column in each subclass table
}
}