如何在GORM GRAILS中为域类建立公共基类型?

时间:2011-10-29 10:57:05

标签: hibernate gorm

如果我有类似......

class Tiger{
    int id
    String name
}

class Giraffe{
    int id
    String name
}

我怎样才能拥有它,以便它们从一个共同的类扩展,例如动物但我不需要动物表,只有长颈鹿和虎表 所以我希望能够像Animal.findNameBy('Bob')这样的查询 这在GORM中是否可行?

3 个答案:

答案 0 :(得分:1)

您可以在Animalgrails-app/src/java中创建一个类grails-app/src/groovy,然后您的域可以扩展该类及其成员,以便在Giraffe和{{1}中使用域名。

我认为您不能在Tiger课程上使用GORM查询。 试试看吧。

答案 1 :(得分:1)

是的,这很容易实现。就像你所描述的那样:在你的域文件夹中添加一个类动物,让长颈鹿和老虎从这个类中派生出来。一切都会立即发挥作用,以便您可以从Anmial课程查询所有动物。看看:http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.2.3%20Inheritance%20in%20GORM

请删除int id定义,因为GORM会处理您的ID。

每个层次结构或每个子类可以有一个表。看看:http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.5.2.3%20Inheritance%20Strategies

答案 2 :(得分:1)

这将生成一个Tiger表和一个Giraffe表,它们(除了默认的GORM id和版本列)都有一个标记为Name的列。虽然长颈鹿也会有一个标有斑点的栏目,而虎将有一个标有条纹的栏目。

class Animal{
  String name
  static mapping = {
    tablePerHierarchy false
   }
}

class Tiger{
  String stripes
}

class Giraffe{
  String spots
}