2014-03-14 36 views
0

Grails中,如果我做的:Grails的failOnError是否強制刷新?

domainObj.save(failOnError: true) 

將隱式沖水Hibernate的緩衝,以及,彷彿「刷新:真正的」添加到ARGS?如果您可以請爲您的答案提供可信的來源,謝謝。

+1

沒有更好的可靠的消息來源比源代碼:-) –

+0

的保存方法通知實例應該被保存或更新的持久化上下文。除非使用flush參數,否則該對象將不會立即保留: 請參閱:http://grails.org/doc/2.3.x/ref/Domain%20Classes/save.html –

回答

4

根據AbstractSavePersistentMethod代碼中的驗證保存/沖洗之前發生,因此,如果它失敗並且failOnError爲真,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 
+0

非常好。結束了一天,謝謝你的免費答覆。 ;-) –