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