我有一个MyParameter
类和一个MyParameterValue
类定义如下:
class MyParameter {
MyParameterValue defaultValue
static belongsTo = [anotherObject: AnotherDomainClass]
}
class MyParameterValue {
MyParameter valueOf
}
我的问题是 GORM坚持用后向引用来对待这种一对一关系,这不是我想要的。它对参数的更新方式有影响。
示例:的
def param = new MyParameter(defaultValue: new MyParameterValue()).save()
def paramVal = new MyParameterValue (valueOf: param).save()
assert param.defaultValue != paramVal
此代码抛出AssertionFailure
。所以发生了什么事?虽然应该很清楚我并不打算在第二行修改param
的默认值,但GORM会更新它,就好像defaultValue
必须与valueOf
中的MyParameterValue
同步一样},
所以GORM实际上改变了我想要的东西:
进入那个:
以下是我的两个问题:
hasOne
关键字的目的是什么,如果从类型的角度看,所有引用看起来像后引用,都会被视为一对一的关系?valueOf
视为defaultValue
的背面参考?请注意,我不想更改级联行为:更改defaultValue
的{{1}}应该级联。更新
我仍然对上述问题的答案感兴趣。我使用的解决方案是为默认值提供自己的类MyParameter
。你可以猜到,MyDefaultValue
是一个复杂的结构,我正在寻找一种避免重复这种结构的方法。
答案 0 :(得分:0)
如果您不想要任何反向引用,但想手动处理所有关系,我想我会定义我的对象:
class MyParameter {
MyParameterValue defaultValue
static constraints {
defaultValue nullable: true
}
}
class MyParameterValue {
MyParameter valueOf
static constraints {
valueOf nullable: true
}
}
但这要求你自己做所有的铅笔。