我有一个我验证的 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()
的格式。 .您调用save
与 failOnError: true
,因此可以安全地假设如果持久性失败会引发异常。如果你不指定这个参数,你可以像这样检查持久化是否成功
if (foo.save()) {
println 'it worked'
} else {
println 'if failed'
}
关于Grails 域实例未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37931382/