如何从非域类继承GORM映射?

时间:2013-05-10 14:35:04

标签: grails inheritance gorm

永久地我有一些表和一些带有映射注释的hibernate类。这个类也有抽象的超类,也有映射注释。但是在这个超类中没有表关联映射。所有表都在子类中标识。 我正在尝试将此映射迁移到GORM模型。但是所有策略:TablePerHierarchy和TablePerSubclass都不适用于我的情况,因为所有表都已创建且无法更改。 我在'src / groovy / somepackage /'中创建了超类,并希望将此类中的映射和约束继承到'domain'文件夹中的子类。对于约束,它工作得很好,但对于映射,我找不到文档如何执行此操作。 有没有人有任何想法?

示例

在非域名文件夹中:

absract class A {
  String a
  static mapping = {
    a column: "column_A"
  }
} 

在域名文件夹中:

class B extends A {
  String b
  static mapping = {
    b column: "column_B"
  }
}

class C extends A {
  String c
  static mapping = {
    c column: "column_C"
  }
}

需要在每个表中使用“column_A”列获取两个表。

2 个答案:

答案 0 :(得分:4)

可以使用克隆和委托功能。这是我做的:

class B extends A {

static mapping = {
    def copyMapping = A.mapping.clone()
    copyMapping.delegate = delegate
    copyMapping.call()
    }
}

答案 1 :(得分:1)

现在可以更直接地做到这一点:

class B extends A {
  static mapping = {
    includes A.mapping
  }
}