删除实体时从M:N关系中删除关联

时间:2012-10-07 16:35:02

标签: grails many-to-many gorm

在我的域名中,我有多对多的关系。问题是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表的行)。是否可能或者我必须自己编写这个逻辑(如果是这样,最好的方法是什么)?

1 个答案:

答案 0 :(得分:0)

无论谁是“所有者”,您都可以删除关系的双方。 belongsTo只应用适当的级联,因此您不必这样做。

在您的示例中,如果要删除用户,首先必须删除该关系。因此,为了删除您执行的用户:

organization.removeFromMembers(user)
user.delete()

如果您删除某个组织,因为它是“所有者”,您只需不需要使用removeFrom*