springBoot+JPA+Mysql項目中的事物管理,發生異常未回滾的問題

    今天在項目中調試代碼的時候,方法中報錯,當去數據庫中查看該方法操作的那條數據記錄時,發現數據已經被修改了。但是該方法整體是處在@Transactional事物管理之下的,也就是說,發生異常時,事物沒有回滾。

    經過查找原因,發現是Mysql表類型問題。Mysql表類型分爲InnoDBMyISAM,二者有本質上的區別。具體區別請鏈接到http://www.cnblogs.com/xiohao/p/3633418.html

    確實,我通過JPA自動創建出來的表,是MyISAM的,修改表類型,問題解決。但是根本原因在於JPA自動創建表時,表類型爲什麼會是MyISAM非事物型。

    在我的項目裏,yml配置文件中,設置了hibernate方言爲MySQL5Dialect,後來將配置改爲 MySQL5InnoDBDialect,生成的表類型就變成了InnoDB型。數據庫版本:Mysql5.7 , hibernate :hibernate-core-5.2.14


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章