Mongodb 更新前更改的字段未持久化
在我的Grails 3.1.14应用程序中,我有一个域类:Mongodb 更新前更改的字段未持久化,mongodb,grails,gorm,interceptor,Mongodb,Grails,Gorm,Interceptor,在我的Grails 3.1.14应用程序中,我有一个域类: class MyDomain { String text def beforeInsert() { beforeUpdate() } def beforeUpdate() { text = changeTextBasedOnOtherFields() println ">>> $text" true } } 在控制器中,使用myDomain.save flush:true
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
然后它就像魅力
有什么办法可以解决这个迷雾吗?这似乎是个难题 在拦截器方法中不应使用
属性
,而应使用设置器
:
def beforeUpdate() {
setText changeTextBasedOnOtherFields()
true
}
这似乎是一个GORM-gotcha 在拦截器方法中不应使用
属性
,而应使用设置器
:
def beforeUpdate() {
setText changeTextBasedOnOtherFields()
true
}
我昨天在Grail3.1.9和Mongodb中遇到了同样的问题,我在3.3中也遇到了同样的问题。11@corrego请看下面我的答案,昨天我在Grail3.1.9中与Mongodb遇到了同样的问题,我在3.3中也遇到了同样的问题。11@corrego下面是我的答案