GORM 支持从抽象类的继承和具体持久化GORM实体的继承。例如:class Content {
String author
}
class BlogEntry extends Content {
URL url
}
class Book extends Content {
String ISBN
}
class PodCast extends Content {
byte[] audioStream
}
上面的示例,我们拥有一个 Content父类和各式各样带有更多指定行为的子类。
注意事项
在数据库层, Grails默认使用一个类一个表格的映射附带一个名为class的识别列,因此,父类 (Content) 和它的子类(BlogEntry, Book 等等.), 共享 相同的表格。
一个类一个表格的映射有个负面的影响,就是你 不能 有非空属性一起继承映射。
另一个选择是使用每个子类一个表格 ,你可以通过 ORM DSL启用。
不过, 过分使用继承与每个子类一个表格会带来糟糕的查询性能,因为,过分使用链接查询。
总之,我们建议:假如你打算使用继承,不要滥用它,不要让你的继承层次太深。