Grails 1.1 对象关联映射 (GORM) - GORM中的继承

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启用。

不过, 过分使用继承与每个子类一个表格会带来糟糕的查询性能,因为,过分使用链接查询。

总之,我们建议:假如你打算使用继承,不要滥用它,不要让你的继承层次太深。