在我的Grails 3.1.14应用程序中,我有一个域类:
class MyDomain {
String text
def beforeInsert() { beforeUpdate() }
def beforeUpdate() {
text = changeTextBasedOnOtherFields()
println ">>> $text"
true
}
}
在控制器中,实例将以myDomain.save flush:true
保存。
问题是,保存会忽略text
属性,尽管我可以在控制台中看到println的输出具有正确的值。
如果我将文本更改代码放在保存前面:
myDomain.text = changeTextBasedOnOtherFields()
myDomain.save flush:true
然后它就像魅力一样!
有什么方法可以解决这个错误吗?
答案 0 :(得分:0)
这似乎是一个 GORM-gotcha。
在拦截器方法中不应使用 property
,而应使用 setter
:
def beforeUpdate() {
setText changeTextBasedOnOtherFields()
true
}