0

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

4

1 回答 1

0

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

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

organization.removeFromMembers(user)
user.delete()

如果你删除一个组织,因为它是“所有者”,你就不需要使用removeFrom*.

于 2012-10-07T17:23:16.380 回答