【问题标题】:Is there any difference between "belongsTo" constraint and just being a field in Grails?“belongsTo”约束和只是作为 Grails 中的一个字段之间有什么区别吗?
【发布时间】:2016-03-13 01:06:28
【问题描述】:
我创建了Child 域并为其创建了 2 个父级。我宣布为一个领域的父母。我在belongsTo 约束的帮助下声明了另一个父级。
打包multipleparentsgrails
class Child {
Parent2 parent2
static belongsTo = [parent1: Parent1]
static constraints = {
}
}
这些方式有什么区别吗?
如何消除差异?我可以同时拥有belongTo 和会员吗?我可以添加具有成员的级联吗?
【问题讨论】:
标签:
grails
grails-orm
grails-3.0
【解决方案1】:
是的,belongsTo 定义了级联。如果 parent1 被删除,则 child 也被删除,因为它属于 parent1。如果 parent2 被删除,Grails 不会自动为你删除 child。
因此,在这种情况下,声明孩子属于父母不会对孩子非常友好:-)
您可以通过几种不同的方式定义belongsTo,这允许您在单独的字段上定义它或声明新字段。有关详细信息,请参阅 Grails 文档,它们有很好的使用示例。
【解决方案2】:
belongsTo 在父子关系中起着重要作用。这里belongsTo中指定的类是关系的Parent / Owner。
以下可能是正常情况下的一些比较 has a 和 belongs To:
belongsTo 将引用的类标记为关系的所有者,而 has a 的情况并非如此
您无需担心与休眠相关的级联,因为关系会自动处理,即您可以指定级联类型但不需要提供实现,否则在has a 的情况下您必须使用 GORM DSL 之类的东西.
最后但同样重要的是,belongsTo 还强制指定关系所有者,而在 has a 的情况下,约束是障碍。
最后但同样重要的是,它也可能对 gsp 脚手架产生影响,但不确定。
希望对你有帮助!