我有一个 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
in同步一样MyParameterValue
,
所以 GORM 实际上改变了我想要的东西:
进入那个:
这是我的两个问题:
hasOne
如果从类型的角度来看,看起来像反向引用的所有引用都被视为一对一关系,那么关键字的目的是什么?- 如何强制 GORM 不将
valueOf
其视为 的反向引用defaultValue
?请注意,我不想更改级联行为:更改defaultValue
aMyParameter
应该是级联的。
更新
我仍然对上述问题的答案感兴趣。我使用的解决方案是给默认值他们自己的类MyDefaultValue
。正如你可能猜到的那样,MyParameterValue
它是一个复杂的结构,我一直在寻找一种方法来避免重复这种结构。