大家好下面的情况是我有一个抽象类AbstractProfile和一个具体的类GoogleProfile
abstract class AbstractProfile {
.....
}
class GoogleProfile extends AbstractProfile {
......
}
我使用的Grails但格姆没有插入的谷歌个人资料目前格姆表只AbstractProfile类插入表请帮助在此先感谢
大家好下面的情况是我有一个抽象类AbstractProfile和一个具体的类GoogleProfile
abstract class AbstractProfile {
.....
}
class GoogleProfile extends AbstractProfile {
......
}
我使用的Grails但格姆没有插入的谷歌个人资料目前格姆表只AbstractProfile类插入表请帮助在此先感谢
我做了一些挖掘和发现,开始对Grails的2.3有以下映射选项:
tablePerConcreteClass true
看来文档(即使是版本2.4 )对此一直没有更新呢。
您可以使用此:
abstract class BaseDomain {
static mapping = {
tablePerConcreteClass true
id generator: 'increment'
version false
}
}
Grails的2.0仍然存在的抽象类。 为了使单个表的扩展类,你需要指定:
static mapping = {
tablePerHierarchy false
}
抽象类。 否则整个层次将在同一个表中“活”。
在Михаил的伟大回答跟进,两个独立的东西为我工作。
这个工作对我来说最好的,因为被应用无论从基类的约束和子类。 其在子类中NOT NULL列是我的使用情况很重要。 然而,似乎只有从子类的映射块被使用。
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
}
}