【发布时间】:2012-04-05 11:19:30
【问题描述】:
我有一个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 必须与MyParameterValue 中的valueOf 同步,
所以 GORM 实际上改变了我想要的:
进入那个:
这是我的两个问题:
- 如果从类型的角度来看,看起来像反向引用的所有引用都被视为一对一关系,那么
hasOne关键字的目的是什么? - 如何强制 GORM 不将
valueOf视为defaultValue的反向引用?请注意,我不想更改级联行为:更改MyParameter的defaultValue应该是级联的。
更新
我仍然对上述问题的答案感兴趣。我使用的解决方案是给默认值他们自己的类MyDefaultValue。如您所料,MyParameterValue 是一个复杂的结构,我一直在寻找一种方法来避免重复此结构。
【问题讨论】:
标签: hibernate grails groovy grails-orm