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 に答える