Grails gorm将如何为每个具体类插入表,其中每个具体类继承一个抽象类

时间:2012-08-03 06:48:21

标签: grails gorm

以下是所有情况 我有一个抽象类AbstractProfile和一个具体类GoogleProfile

abstract class AbstractProfile  {
    .....
}

class GoogleProfile extends AbstractProfile { 

    ......
}

我正在使用grails但是gorm没有为google profile插入表格当前gorm正在插入表格,只有AbstractProfile类请帮助提前感谢

4 个答案:

答案 0 :(得分:2)

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

tablePerConcreteClass true

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

答案 1 :(得分:1)

您可以使用:

abstract class BaseDomain {
            static mapping = {
                tablePerConcreteClass true
                id generator: 'increment'
                version false
            }
    }

答案 2 :(得分:0)

Grails 2.0持久化抽象类。为了使单个表能够扩展类,您需要指定:

static mapping = {
        tablePerHierarchy       false
}

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

答案 3 :(得分:0)

跟进Михаил的好回答,两件不同的事情对我有用。

  1. 将基础域类放在src
  2. 这对我来说效果最好,因为应用了基类和子类的约束。在子类中没有空列对我的用例很重要。但是,似乎只使用子类中的映射块。

    1. 使用tablePerConcreteClass true
    2. 这里的一个优点是它允许在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
          }
      }