参考博文: 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 方法已经奏效可以正常插入数据库了。
本篇完~