【发布时间】:2017-05-04 04:49:53
【问题描述】:
Grails 没有为数据库对象生成 id。我创建了具有相应域类的对象。现在,如果我调用 save(flush:true) 我会得到 null id ...
但是flush不应该生成id吗?
【问题讨论】:
标签: grails
Grails 没有为数据库对象生成 id。我创建了具有相应域类的对象。现在,如果我调用 save(flush:true) 我会得到 null id ...
但是flush不应该生成id吗?
【问题讨论】:
标签: grails
您确定它真的保存了它吗?这通常意味着存在错误,因此您需要捕获它并将其转发回去或其他什么。 您应该能够通过执行来查看错误
if (!object. save(flush:true)) {
// throw new RuntimeException("something went wrong");
//println "object errors ${object.errors} //.allErrors}
//or
//object.errors.reject('object.failed.saved', '')
}
有时甚至更嵌套失败,可以这样被捕获
try {
subobject.removeFromElements(object)
subobject.save(flush:true)
} catch (Exception e) {
throw new ValidationException('failed.message',subobject.errors)
}
如果您首先尝试第一种方法以查看是否有错误,则 finally if still nothing 尝试通过将 try catch 包裹在整个保存块周围来进行测试,以查看其他组件是否导致您的问题。在这之间,你回答了
【讨论】:
您是否尝试在映射中添加以下内容?
静态映射 = {
id(generator: "assigned")
}
【讨论】: