2

大家好,以下是我有一个抽象类 AbstractProfile 和一个具体类 GoogleProfile 的情况

abstract class AbstractProfile  {
    .....
}

class GoogleProfile extends AbstractProfile { 

    ......
}

我正在使用 grails,但 gorm 没有为 google 个人资料插入表格 当前 gorm 只为 AbstractProfile 类插入表格 请帮助提前谢谢

4

4 回答 4

3

我做了一些挖掘,发现从grails 2.3开始你有以下映射选项:

tablePerConcreteClass true

似乎文档(即使是版本2.4)尚未对此进行更新。

于 2014-07-03T19:06:22.107 回答
1

你可以使用这个:

abstract class BaseDomain {
            static mapping = {
                tablePerConcreteClass true
                id generator: 'increment'
                version false
            }
    }
于 2015-05-19T17:04:40.227 回答
0

Grails 2.0 保留了抽象类。为了将单个表启用到扩展类,您需要指定:

static mapping = {
        tablePerHierarchy       false
}

到抽象类。否则,整个层次结构将“存在”在同一个表中。

于 2012-08-03T06:52:17.560 回答
0

跟进Михаил's great answer,有两件事对我有用。

  1. 将基础域类放入 src

这对我来说效果最好,因为基类和子类的约束都被应用了。子类中没有空列对我的用例很重要。但是,似乎只使用了子类中的映射块。

  1. 使用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
    }
}
于 2015-07-07T18:40:44.530 回答