Grails 域实例未保存

标签 grails grails-orm

我有一个我验证的 grails 域对象,然后保存为:

if(foo.hasErrors()) {
   transactionStatus.setRollbackOnly()
   respond foo.errors, view: 'create'
   return
}

foo.save flush:true, failOnError:true

println(foo)

保存时没有给出错误。但是当我调用 println 时,它说我的对象未保存。但是,如果我检查数据库,它确实已经被持久化了。有什么我可以检查的东西告诉我为什么 grails 告诉我它没有保存。 grails 版本是 3.0.9。

经过更多测试,它看起来与我在域映射中指定键的方式有关。
static mapping = {
    version false
    autoTimestamp false
    id name:'foo_id', generator:'increment'
}

如果我删除 id 字段并让 Grails 默认处理它,则对象会正确保存。如果我重新添加 id 字段,则会出现上述问题。有什么原因吗?

最佳答案

我不会太在意 toString() 的格式。 .您调用savefailOnError: true ,因此可以安全地假设如果持久性失败会引发异常。如果你不指定这个参数,你可以像这样检查持久化是否成功

if (foo.save()) {
  println 'it worked'
} else {
  println 'if failed'
}

关于Grails 域实例未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37931382/

相关文章:

Grails 2.4.2 - 动态引用默认数据源

Grails:两个域对象之间的多重关系

grails - 如何在Grails中使用自定义身份验证过滤器?

javascript - jquerydateRangeslider 中的 jQuery "Uncaught TypeError"

session - 登录页面使用 SSL,未加密的页面看不到加密的 session cookie(Grails、Acegi)

每次提交命令对象时,Grails 2.3.7 乐观锁定版本都会更新

grails - 渴望加载整个关联?

java - Docker Swarm 上具有多线程的分布式 Java 应用程序

grails - grails 中的自定义标记库未正确传递 HTML 标记

grails - GORM 使用 hasMany 映射同一类的两个属性