Grails GORM:更新关联对象';beforeUpdate上的属性未持久化
我有一个域类,如:Grails GORM:更新关联对象';beforeUpdate上的属性未持久化,grails,gorm,grails-2.0,Grails,Gorm,Grails 2.0,我有一个域类,如: class X { String name Y y def beforeUpdate() { y.name = "new name" y.save() //DOESN'T work, adding flush: true throws exception } } 刷新期间会发生beforeUpdate事件,因此无法触发另一次刷新。(如果这样做,将导致堆栈溢出。) 如果更新之前的返回false,它将取消保存
class X {
String name
Y y
def beforeUpdate() {
y.name = "new name"
y.save() //DOESN'T work, adding flush: true throws exception
}
}
刷新期间会发生
beforeUpdate
事件,因此无法触发另一次刷新。(如果这样做,将导致堆栈溢出。)
如果更新之前的返回false,它将取消保存。我建议您尝试以下方法:
def beforeUpdate() {
y.name = "new name"
return true
}
我相信save方法正在返回null(失败),它被强制为false。这是有效的!以前保存的是X
的实例,但不是Y
。为什么要保存y
?默认情况下,GORM将级联保存嵌入对象。我只能猜测为什么以前没有保存它。这是一种绕过依赖域对象验证的方法吗?也就是说,是否有可能在不知道的情况下设置无效值?@StefanRother Stübs你能详细说明你的意思吗?我不这么认为,beforeInsert和beforeUpdate应该在验证之前调用。