beforeUpdate 中更改的字段未保留
Fields changed in beforeUpdate not persisted
在我的 Grails 3.1.14 应用程序中,我有一个域 class:
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
那么它就像魅力一样!
有什么解谜的方法吗?
这似乎是一个 GORM 陷阱。
而不是在拦截器方法中使用 property
,应该使用 setter
:
def beforeUpdate() {
setText changeTextBasedOnOtherFields()
true
}
在我的 Grails 3.1.14 应用程序中,我有一个域 class:
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
那么它就像魅力一样!
有什么解谜的方法吗?
这似乎是一个 GORM 陷阱。
而不是在拦截器方法中使用 property
,应该使用 setter
:
def beforeUpdate() {
setText changeTextBasedOnOtherFields()
true
}