回滾事務

執行方式

在事務執行的結構中在欲回滾的地方拋出 Exception,

Spring 會捕捉所有未處理的內容,並標記是否需要回滾。

預設行為

只有 RuntimeExceptionError 才會回滾。

指定回滾時機

rollback-for:指定欲回滾的 Exception。

@Transactional(rollbackFor=Exception.class)

no-rollback-for:指定不回滾的 Exception。

@Transactional(noRollbackFor=Exception.class)

透過程式回滾

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

Last updated

Was this helpful?