簡體   English   中英

嵌套的Spring Transaction永遠不會回滾

[英]Nested Spring Transaction never rollback

我正在處理一個服務層,它在執行任務時記錄到數據庫。 我想確保每當發生錯誤時此日志不會回滾,因為我應該始終記錄失敗的嘗試。 下面是示例代碼,用於解釋我想要的內容。

@Transactional(rollbackFor=Exception.class)
public void performTask()
{
    //Perform task 1
    log("task1Complete");

    //Perform task 2
    log("task2Complete");
}

@Transactional()
public void log(String message)
{
    //commit message to DB
    //This should never rollback
}

我認為這樣做的方法是開始新的交易,但我不確定如何。

你想用:

@Transactional(propagation = Propagation.REQUIRES_NEW)

請參閱: 傳播

此外,您的TransactionManager必須配置為允許嵌套事務

使用 :

@Transactional(propagation = Propagation.REQUIRES_NEW)

請注意,如果您使用的是JDK Proxies或CGIL Proxies,則在“this”上調用@Transactional方法將無法打開事務。 您必須使用AspectJ,或者在另一個對象上調用它以通過其代理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM