2

hasManyが2つ(またはそれ以上)のドメインクラスがあるC場合、のエンティティCが追加されているかどうかを確認するにはどうすればよいですか?

class A {
    String name
    static hasMany = [cs: C]
class B {
    String name
    static hasMany = [cs: C]
}
class C {
    String someProperty
}

// In CController add Action
//...
genericInstance.addToCs(cInstance)

処理できるイベントをもっと探しています。とCControllerのインラインフォームに使用されますが、追加するドメインに応じて2つの異なるプロセスを実行する必要がありますABC

4

2 に答える 2

1

クラスとで独自のaddToCsメソッド/クロージャを作成する可能性があります。AB

class A {
    String name
    static hasMany = [cs: C]
    def addToCs = {
        // Do what you want with your value
        cs.add(C)
    }
}

デフォルトで何が起こるかに注意してくださいaddToCsDomainClassGrailsPlugin.groovy:289 @github

于 2013-01-08T10:48:51.060 に答える
0

A と B が同一のプロパティを持っていることを考えると、A と B を 1 つのドメインに統合してみませんか?

次のようにすることをお勧めします。

class AB {
    char type
    String name
    static hasMany = [cs: C]

    static constraints = {
        type inList:['A','B']     //you can extend to 'C', 'D'... easily with this
    }
}
class C {
    String someProperty
}

コントローラーでは、次のことができます。

abInstance.addToCs(cInstance)
def domainTag = abInstance.type

次に、 domainTag が必要です。

于 2013-01-08T05:40:14.100 に答える