Grails';谁的失败者强行冲水?

Grails';谁的失败者强行冲水?,grails,groovy,persistence,gorm,Grails,Groovy,Persistence,Gorm,在Grails中,如果我这样做: domainObj.save(failOnError: true) 这是否会隐式地刷新Hibernate的缓冲区,就像“flush:true”被添加到args中一样?如果您能为您的答案提供可靠的来源,谢谢。根据验证中的代码,验证在保存/刷新之前发生,因此如果失败且FailOneError为true,则将抛出ValidationException,并且不会发生刷新 if (errors.hasErrors()) { handleValidationError

在Grails中,如果我这样做:

domainObj.save(failOnError: true)
这是否会隐式地刷新Hibernate的缓冲区,就像“flush:true”被添加到args中一样?如果您能为您的答案提供可靠的来源,谢谢。

根据验证中的代码,验证在保存/刷新之前发生,因此如果失败且FailOneError为true,则将抛出ValidationException,并且不会发生刷新

if (errors.hasErrors()) {
  handleValidationError(domainClass,target,errors);
  boolean shouldFail = shouldFail(application, domainClass);
  if (argsMap != null && argsMap.containsKey(ARGUMENT_FAIL_ON_ERROR)) {
    shouldFail = GrailsClassUtils.getBooleanFromMap(ARGUMENT_FAIL_ON_ERROR, argsMap);
  }
  if (shouldFail) {
    throw new ValidationException("Validation Error(s) occurred during save()", errors);
  }
  return null;
}
...
return performSave(target, shouldFlush); //here flush can happen
根据验证中的代码,验证在保存/刷新之前发生,因此如果失败且FailOneError为true,则将抛出ValidationException,并且不会发生刷新

if (errors.hasErrors()) {
  handleValidationError(domainClass,target,errors);
  boolean shouldFail = shouldFail(application, domainClass);
  if (argsMap != null && argsMap.containsKey(ARGUMENT_FAIL_ON_ERROR)) {
    shouldFail = GrailsClassUtils.getBooleanFromMap(ARGUMENT_FAIL_ON_ERROR, argsMap);
  }
  if (shouldFail) {
    throw new ValidationException("Validation Error(s) occurred during save()", errors);
  }
  return null;
}
...
return performSave(target, shouldFlush); //here flush can happen

没有比源代码更可靠的源代码:-)save方法通知持久性上下文应该保存或更新实例。除非使用flush参数,否则不会立即持久化对象:refere:没有比源代码更可靠的源:-)save方法通知持久化上下文应该保存或更新实例。除非使用flush参数,否则不会立即保留该对象:refere: