真の外部キー関係の代わりに一時的なプロパティを使用するドメイン クラスを作成しました。
//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つの目標を除いて、すべてを機能させることができます。自動マジック プロパティをパラメーター セッターにオーバーライドすることは可能ですか?