2013-10-23 46 views
0

我在我的類聲明上面有這個聲明。 DAOException拋出時只會回滾嗎?只有在引發異常時,回滾事務功能纔有效嗎?

@Transactional(rollbackFor = { ManagerException.class, DAOException.class }) 

如果是這樣的話,我該如何在不拋出異常的情況下回滾一個錯誤的提交。目前我的數據庫包函數返回錯誤消息,我想回滾並仍然向用戶顯示錯誤消息,而不會引發異常並使應用程序崩潰。

+0

你可以做到這一點,只要你想 – 2013-10-23 11:37:34

回答

2

The documentation說:

您也可以指示所需的回滾編程。雖然很簡單,這個過程是相當侵入性的,並緊緊地將你的代碼到Spring框架的事務架構:

public void resolvePosition() { 
    try { 
     // some business logic... 
    } catch (NoProductInStockException ex) { 
     // trigger rollback programmatically 
     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
    } 
} 
相關問題