在我的域名中,我有多对多的关系。问题是GORM强迫我定义所有者实体,但我不认为任何一方“拥有”这种关系。
class User {
String username
String password
static hasMany = [organizations: Organization]
static belongsTo = Organization
static constraints = {
}
}
class Organization {
String name;
static hasMany = [members: User]
}
在这种情况下,我显然不允许删除某个组织中的用户(因为组织“拥有”该关系)。我希望能够删除这两个实体,并在删除时只删除关系(来自user_organization表的行)。是否可能或者我必须自己编写这个逻辑(如果是这样,最好的方法是什么)?
答案 0 :(得分:0)
无论谁是“所有者”,您都可以删除关系的双方。 belongsTo
只应用适当的级联,因此您不必这样做。
在您的示例中,如果要删除用户,首先必须删除该关系。因此,为了删除您执行的用户:
organization.removeFromMembers(user)
user.delete()
如果您删除某个组织,因为它是“所有者”,您只需不需要使用removeFrom*
。