天天看點

springboot 事務不起作用

當@Transactional不起作用如何排查問題。

可以按照以下幾個步驟逐一确認:

1、首先要看資料庫本身對應的庫、表所設定的引擎是什麼。MyIsam不支援事務,如果需要,則必須改為InnnoDB。

2、@Transactional所注解的方法是否為public

3、@Transactional所注解的方法所在的類,是否已經被注解@Service或@Component等。

4、需要調用該方法,且需要支援事務特性的調用方是在在 @Transactional所在的類的外面。注意:類内部的其他方法調用這個注解了@Transactional的方法,事務是不會起作用的。

5、注解為事務範圍的方法中,事務的復原僅僅對于unchecked的異常有效。對于checked異常無效。也就是說事務復原僅僅發生在出現RuntimeException或Error的時候。

如果希望一般的異常也能觸發事務復原,需要在注解了@Transactional的方法上,将@Transactional復原參數設為:

@Transactional(rollbackFor=Exception.class)
           

 文章參考:https://blog.csdn.net/Z__Sheng/article/details/89489053

繼續閱讀