參考博文: spring-data-jpa中save不觸發數據庫insert語句的問題
這篇博文記錄一個錯誤,當Mybatis 和JPA 混合使用的時候,如果你不小心設置了JDBC 事務管理器,那麼Spring Data JPA 的save方法可能因爲衝突導致方法失效。
造成的影響就是無論怎麼操作,雖然JPA save 對象保存成功了但是就是數據庫中找不到插入的記錄。
錯誤示範如下:
<!-- 數據庫事務管理 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
修復方案一:
直接註釋掉org.springframework.jdbc.datasource.DataSourceTransactionManager
bean的定義即可
<!-- 數據庫事務管理 -->
<!-- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">-->
<!-- <property name="dataSource" ref="dataSource"/>-->
<!-- </bean>-->
修復方案二:
當然你也可以註釋掉上面那個bean 然後自己添加這個JPA 的事務管理器org.springframework.orm.jpa.JpaTransactionManager
<!-- 配置Spring Data JPA 事務管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
PS: 但是由於Spring Data JPA 有自動配置功能,因此不設置也可以。
修復之後你會看到save 方法已經奏效可以正常插入數據庫了。
本篇完~