Mybatis和JPA混用因事务管理器错误使用导致JPA的save方法失效

参考博文: 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 然后自己添加这个JPA 的事务管理器org.springframework.orm.jpa.JpaTransactionManager

    
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    bean>

PS: 但是由于Spring Data JPA 有自动配置功能,因此不设置也可以。


修复之后你会看到save 方法已经奏效可以正常插入数据库了。

本篇完~

你可能感兴趣的:(#,Spring,Data,JPA,JPA,save,方法失效,mybatis和JPA混合使用,插入失败,JPA更新或保存失败)