在昨天的《事務管理入門》一文發布之后,有讀者聯系說根據文章嘗試,加了@Transactional注解之后,事務并沒有回滾,經過一頓溝通排查之后,找到了原因,在此記錄一下,給后面如果碰到類似問題的童鞋一個參考,
問題原因
在前文的描述中,我漏了一個細節,其實在示例代碼中,與之前拿的基礎例子在配置中有一個關鍵屬性沒有提到,就是下面這個配置:
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
這里的spring.jpa.database-platform配置主要用來設定hibernate使用的方言,這里特地采用了MySQL5InnoDBDialect,主要為了保障在使用Spring Data JPA時候,Hibernate自動創建表的時候使用InnoDB存盤引擎,不然就會以默認存盤引擎MyISAM來建表,而MyISAM存盤引擎是沒有事務的,
所以,如果你的事務沒有生效,那么可以看看創建的表,是不是使用了MyISAM存盤引擎,如果是的話,那就是這個原因了!
本文首發:為什么加了@Transactional注解,事務沒有回滾?,轉載請注明出處,
歡迎關注我的公眾號:程式猿DD,獲得獨家整理的學習資源和日常干貨推送,
如果您對我的其他專題內容感興趣,直達我的個人博客:didispace.com,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/144557.html
標籤:Java
上一篇:Spring詳細基本開發流程
下一篇:類物件a呼叫成員函式,在其中新建區域類物件回傳其參考,為什么區域變數沒被銷毀,反而把它的值賦給了main里的類物件b呢
