2

真の外部キー関係の代わりに一時的なプロパティを使用するドメイン クラスを作成しました。

//ChildThing.groovy
class ChildThing {
    String name
    static constraints = {
    }
    static mapping = {
        datasource("two")
        //table name: "child_thing"
        version false
    }
}

//ParentThing.groovy
class ParentThing {
    String name
    static transients = [
            'children'
    ]
    static hasMany = [children: ChildThing]
    Set<ChildThing> getChildren() {
        ParentThingChildThing.findAllByParentThing(this).collect { ChildThing.get(it.childThing) } as Set
    }
    def setChildren(List<Long> children) {
        children.each {
            ParentThingChildThing.findOrSaveWhere([parentThing: this, childThing: it])
        }
    }
}
//ParentThingChildThing.groovy
import org.apache.commons.lang.builder.HashCodeBuilder

class ParentThingChildThing implements Serializable {
    ParentThing parentThing
    Long childThing
    boolean equals(other) {
        if (!(other instanceof ParentThingChildThing)) {
            return false
        }
        other.parentThing?.id == parentThing?.id &&
            other.childThing?.id == childThing
    }
    int hashCode() {
        def builder = new HashCodeBuilder()
        if (parentThing) builder.append(parentThing.id)
        if (childThing) builder.append(childThing)
        builder.toHashCode()
    }
    static mapping = {
        id composite: ['parentThing', 'childThing']
        version false
    }
}

children名前付きのパラメーターとセットを介して渡すことを望んでいましたparentThing.properties = params

その1つの目標を除いて、すべてを機能させることができます。自動マジック プロパティをパラメーター セッターにオーバーライドすることは可能ですか?

4

0 に答える 0