@Transactional遇到try catch失效的問題
@Transactional遇到try catch失效
Springboot中@Transactional遇到了try catch失效了,需要手動回滾
try {
user.setExpire(Integer.parseInt(expire));
userService.updateById(user);
Host host = hostService.getById(user.getHostId());//查詢數(shù)據(jù)庫的host信息
updateResponse = proxmoxConfig.updateEffectiveTime(user.getUserName(), expire, host.getHostUrlRequest());
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
@Transactional與try..catch同時使用的經(jīng)驗
@transactional 是我們在java 開發(fā)中經(jīng)常用到的注解,幫助我們非常方便快捷的完成事務(wù)管理,尤其在批量處理數(shù)據(jù)的時候,更是重要,最近業(yè)務(wù)中遇到了這種情況,
批量向數(shù)據(jù)庫導(dǎo)入數(shù)據(jù),這就會出現(xiàn)excel表中有的數(shù)據(jù)類型符合導(dǎo)入要求,有的不符合,當(dāng)我們導(dǎo)入的時候要么就全部成功的導(dǎo)入,要么就失敗都不導(dǎo)入,如果不用事務(wù)的話就會出現(xiàn)數(shù)據(jù)正確的會導(dǎo)入到數(shù)據(jù)庫,不正確的就沒導(dǎo)入,造成數(shù)據(jù)的不一致性,
可我的業(yè)務(wù)不僅僅是用@transactional 注解完成事務(wù),而且當(dāng)出現(xiàn)數(shù)據(jù)不符拋異常的時候還要返回錯誤的提示,所以我還得結(jié)核try...catch 塊,問題來了,用try...catch就是捕獲異常,然后處理掉,而 @transactional 是要在系統(tǒng)拋異常的時候才能起到事務(wù)回滾的作用,
后來我查了一些資料,如下操作:

重點就是TransactionAspectSupport.currentTransactionStatus().setRollbackOnly 這個方法,它會起到異?;貪L的作用,這樣我就可以在它執(zhí)行完之后,設(shè)置需要返回的自定義的信息
最近又遇到了@transactional 注解不起作用的問題了,這一次的情況是原來我的mysql 數(shù)據(jù)庫默認(rèn)用的是MyISAM 引擎,而這個存儲引擎不支持事務(wù),所以需要對數(shù)據(jù)庫的進(jìn)行一下操作:在控制臺輸入 alter table xxx(表名) engine=InnoDB 然后你可以在輸入show create table xxx(表名) 來查看是否修改成功

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java利用LocalDate進(jìn)行日期處理的完全指南
這篇文章主要為大家詳細(xì)介紹了Java利用LocalDate進(jìn)行日期處理的詳細(xì)教程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
解決SpringBoot啟動過后不能訪問jsp頁面的問題(超詳細(xì))
這篇文章主要介紹了解決SpringBoot啟動過后不能訪問jsp頁面的問題,文中通過示例代碼介紹的非常詳細(xì),有需要的朋友可以參考一下,希望對你有所幫助。2020-05-05
gradle和maven打包時排除application.properties問題
文章主要介紹了Gradle、Maven(用于構(gòu)建JAR包)和Maven(用于構(gòu)建WAR包),文章基于個人經(jīng)驗,為讀者提供了參考,并鼓勵大家支持腳本之家2024-12-12
SpringBoot+mybatis+thymeleaf實現(xiàn)登錄功能示例
這篇文章主要介紹了SpringBoot+mybatis+thymeleaf實現(xiàn)登錄功能示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

