問題描述:
在做DAO層得的成單元測試時,測試類XXXDAOIntegrationTest 繼承了spring的測試基類AbstractTransactionalJUnit4SpringContextTests, 測試時事務沒有正常回滾.
解決方案:
首先排查代碼沒有問題. 最後發現是建立數據庫表時, 沒有指定表的引擎. 而Mysql5.x在linux下的默認引擎是MyISAM, 而不是期望的InnoDB, 所以建立數據庫表時如果沒有指定引擎, 那麼表的引擎MyISAM, 從而導致不支持事務. 解決辦法是把所有的表的引擎改爲InnoDB後, 事務正常回滾了.