2015-10-13 42 views
1
@Transactional 
method() { 

    try { 
     update1() 
     update2() 
     } 
    catch (Exception ex) { 
    // creating a response with error message and error code object   
    } 

    return response (contains response details for update1() and update2()) 
} 

當update2()失敗時,我需要一些幫助來回滾發生在update1()中的事務。 ()) 但是,當update1()是成功和update2()失敗時,我捕捉異常創建一個響應對象,在這裏拋出一個異常,但在update1()失敗時,代碼正常工作,因爲我們還沒有到達update2() 。 catch塊是不是一個選項,因爲我需要創建一個響應對象...在這種情況下.. update1與狀態201和update2與狀態500說..在所有狀態500 ..春季交易 - 當沒有例外拋出

請幫助...

回答

0

您可以使用TransactionTemplate獲得更多細粒度的交易。

TransactionTemplate tt = new TransactionTemplate(tx); 
tt.execute(new TransactionCallbackWithoutResult(){ 
    @Override 
    protected void doInTransactionWithoutResult(TransactionStatus status){ 
    ... 
    } 
} 

您不需要拋出異常來回滾。通過TransactionStatus,您可以撥打setRollbackOnly通知交易,唯一可能的結果是回滾。

+0

感謝您的幫助 –