grails - 在Grails子类中重写overrideTo/hasMany

标签 grails grails-domain-class

我有这四个类:

class Animal {
    static hasMany = [legs: Leg]
}

class Cat extends Animal {
    static hasMany = [legs: CatLeg] // Should I remove this line?
}

class Leg {
    static belongsTo = [animal: Animal]
}

class CatLeg extends Leg {
    static belongsTo = [animal: Cat] // Should I remove this line?
}

这样可以吗是否有必要或建议在子类中再次声明这些变量?添加或省略它们之间的区别是什么?

我目前正在使用Grails 2.2.2。

谢谢,

乔迪

最佳答案

这取决于您的休眠设置。在Grails中,默认情况下,Hibernate将对象的层次结构映射到1个表中(每个表的层次结构)。这意味着,您无需在子类中再次声明引用。 GORM层将注意正确的类(Leg vs. CatLeg)。

通常,我建议完全避免对象层次结构,而应将其替换为composition,特别是如果您具有引用对象的层次结构。我认为,如果将来需求发生变化,您可能会遇到麻烦,即将数据迁移到新模型中。

关于grails - 在Grails子类中重写overrideTo/hasMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21836161/

相关文章:

grails - 域类如何将 'all-delete-orphan'级联到它没有引用的子级?

grails - 如何将inList约束添加到不同类的变量中?

database - 如何在 grails 域类中调整 Map 的约束/DB 映射

Grails + Spring 安全 : unable to login

javascript - WAR 文件已部署,但在 GlassFish 上运行不正常

grails - 在 grails 中建模多对一树

grails - 向Grails脚手架添加数组成员

authentication - 已启用CAS的Grails应用程序

grails - GGTS转换为Grails失败,并出现NoClassDefFoundError

javascript - 在 g :remoteLink as result of javascript function 中传递参数