如果我在域对象上调用 save() 但设置了 validate: false 会发生什么?
if (!domainObject.save(validate: false)) {
def errors = ""
domainObject.errors.each {
errors += it
}
throw new Exception("Error saving domainObject: ${errors}")
}
Run Code Online (Sandbox Code Playgroud)
我虽然在这里会得到一个异常,因为 save 会返回 null,但我有一个期待异常的测试,但它失败了,因为没有抛出。如果我打开 failOnError 并且不关闭验证,则测试按预期执行。如果对象无效, save() 返回什么?
如果您关闭 验证save,则将在不事先验证实例的情况下执行保存。由于来自底层数据库的限制,这可能会也可能不会起作用。但是,在实例被持久化的情况下,save将返回(持久化)对象,这不会进入您的if分支。
例如,如果您在域对象中设置了blank: false或min: 6,并且底层数据库不知道此类约束,则可以完美地保存。
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |