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应该在验证之前调用。