这一个是对Grails的用户在这里。 我问它的Grails上 - 用户邮件列表,但我想,因为我一直在争取这几天我应尽可能广泛净投越好。
我有一些困难,试图在另一个对象(不同型号)同一类型的两个对象之间的关系进行建模引用两个对象。
由于什么,我试图做一个例子,假设您正在模拟家庭成员之间的关系。 任何给定的关系“属于关联”两个不同的家庭成员。 所以:
class Person {
hasMany[relationships: Relationship]
static mappedBy = [relationships:'p1', relationships:'p2']
}
class Relationship {
Person p1
Person p2
String natureOfRelationship // for example, "cousins"
static belongsTo = [p1: Person, p2: Person]
}
这里的意图是,如果P1或P2被删除,然后删除会级联到在地图的hasMany关系的所有对象。 取而代之的是,每次我尝试它的时候,我结束了一个外键冲突。 我试着用作为覆盖的文档中的“级联”属性:
http://grails.org/doc/1.0.x/guide/single.html#5.5.2.9%20Custom%20Cascade%20Behaviour
所以,我想我会它添加到Person类:
static mapping = {
relationships cascade:'delete'
}
我没有与任何运气无论是。
我又看了看那个Grails的生成devDB.script文件,看看它是如何设置上关系的外键。 如果我手动添加“ON DELETE CASCADE”这两个外键约束,那么它工作正常,但显然这样做手动编辑自动生成的数据库脚本是不是最强大的解决方案。 理想情况下,我想能够指定使用GORM这种行为。
那么什么是我最好的选择吗? 有没有办法强制级联删除多个外键/业主? 我需要与人的onDelete操作手动做到这一点? 我需要进入休眠CONFIGS这一点,或者我可以做到这一点在Grails的/格姆某种方式?
非常感谢您的时间和您可以提供任何帮助。