如果我有类似......
class Tiger{
int id
String name
}
class Giraffe{
int id
String name
}
我怎样才能拥有它,以便它们从一个共同的类扩展,例如动物但我不需要动物表,只有长颈鹿和虎表 所以我希望能够像Animal.findNameBy('Bob')这样的查询 这在GORM中是否可行?
答案 0 :(得分:1)
您可以在Animal
或grails-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
}