首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未持久化beforeUpdate中更改的字段

未持久化beforeUpdate中更改的字段
EN

Stack Overflow用户
提问于 2016-11-11 13:32:30
回答 1查看 121关注 0票数 1

在我的Grails 3.1.14应用程序中,我有一个域类:

代码语言:javascript
复制
class MyDomain {

  String text

  def beforeInsert() { beforeUpdate() }

  def beforeUpdate() {
    text = changeTextBasedOnOtherFields()
    println ">>> $text"
    true
  }
}

在控制器中,实例使用myDomain.save flush:true保存。

问题是,text属性通过保存而被忽略,尽管我可以在控制台中看到带有适当值的println输出。

如果我将文本更改代码放在保存的前面:

代码语言:javascript
复制
myDomain.text = changeTextBasedOnOtherFields()
myDomain.save flush:true

那它就像魅力一样有效!

有什么办法解决这个迷雾吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 17:48:28

好像是戈姆-抓到你了。

与其在拦截器方法中使用property,不如使用setter

代码语言:javascript
复制
def beforeUpdate() {
  setText changeTextBasedOnOtherFields()
  true
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40549111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档