簡體   English   中英

@Transactional 回滾在 SpringBoot 中不起作用

[英]@Transactional rollback not working in SpringBoot

我有一個調用兩個函數的@Component層。 我強迫我的第二個 function 返回一個異常,但第一個事務沒有回滾。 此 Service 層使用@Transactional注釋

@Transactional
class {

void updateMessageResult() {
    Message updatedMessage = messageService.updateResult(message, messageQueueDto);
    messagePublisher.publishEvent(updatedMessage);
 }
}

publishEvent ,它被迫拋出 RuntimeException

public void publishEvent()  {
throw new RuntimeException();
}

更新:我嘗試了這些建議,但它仍然不會回滾

您是否在項目中啟用了事務管理?

例如,使用 @EnableTransactionManagement 注釋您的配置class

還有一件事:使用@Transactional 的事務回滾默認僅適用於 RuntimeException(或其子類)。 確保您拋出的異常是 RuntimeException

在需要事務的方法級別使用@Transactional注釋。 它應該工作。

抱歉發布錯誤的代碼。 我只是輸入代碼而不是復制粘貼它。

答案是我忘記為該方法添加訪問器(或公共)。

如果您不指定 Java 中方法的訪問器,則默認訪問器將是默認的。

謝謝!

暫無
暫無

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

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