我有一个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
的MyParameter
应该是级联的。 更新
我仍然对以上问题的答案感兴趣。我使用的解决方案是为默认值提供自己的类
MyDefaultValue
。如您所料,MyParameterValue
是一个复杂的结构,我正在寻找一种避免重复此结构的方法。
最佳答案
如果您不想使用任何反向引用,但想手动处理所有关系,我想我将定义这样的对象:
class MyParameter {
MyParameterValue defaultValue
static constraints {
defaultValue nullable: true
}
}
class MyParameterValue {
MyParameter valueOf
static constraints {
valueOf nullable: true
}
}
但是,这需要您自己完成所有垂直处理。
关于hibernate - 强制GORM将一对一关系视为独立关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027576/