如果我在域对象上调用save()但设置了validate:false?
会发生什么if (!domainObject.save(validate: false)) {
def errors = ""
domainObject.errors.each {
errors += it
}
throw new Exception("Error saving domainObject: ${errors}")
}
虽然我在这里得到一个例外,因为save会返回null,但我有一个测试期待一个异常,但是它失败了,因为没有抛出。如果我打开failOnError并且不关闭验证,那么测试将按预期执行。如果对象无效,save()会返回什么?
答案 0 :(得分:4)
如果关闭save
的验证,则会在未事先验证实例的情况下执行保存。由于底层数据库的约束,这可能会也可能不会起作用。但是,如果实例被持久化,那么save
将返回(持久化)对象,这将不会进入您的if
分支。
如果是您在域对象中设置了blank: false
或min: 6
,而基础数据库不知道这些约束,那么保存可以完全正常。