次のように定義された MyParameter
クラスとクラスがありMyParameterValue
ます。
class MyParameter {
MyParameterValue defaultValue
static belongsTo = [anotherObject: AnotherDomainClass]
}
class MyParameterValue {
MyParameter valueOf
}
私の問題は、 GORMがこれをバックリファレンスとの1対1の関係として扱うことを主張していることです。これは、私が望んでいることではありません。これは、パラメーターの更新方法に影響を及ぼします。
例:
def param = new MyParameter(defaultValue: new MyParameterValue()).save()
def paramVal = new MyParameterValue (valueOf: param).save()
assert param.defaultValue != paramVal
このコードはをスローしAssertionFailure
ます。どうしたの?2行目のデフォルト値を変更するつもりはなかったことは明らかですがparam
、GORMは、で同期する必要があるかのように更新しdefaultValue
ます。valueOf
MyParameterValue
したがって、GORMは実際に私が望むものを変換します:
その中に:
これが私の2つの質問です:
hasOne
タイプの観点からは後方参照のように見えるすべての参照が、とにかく1対1の関係として扱われる場合、キーワードの目的は何ですか?valueOf
GORMをのバックリファレンスとして扱わないように強制するにはどうすればよいdefaultValue
ですか?カスケード動作を変更したくないことに注意してください。の変更はカスケードdefaultValue
するMyParameter
必要があります。
アップデート
私はまだ上記の質問への答えに興味があります。私が使用した解決策は、デフォルト値に独自のクラスを与えることでしたMyDefaultValue
。ご想像のとおり、これMyParameterValue
は複雑な構造であり、この構造の重複を避ける方法を探していました。