Spring JPA无法提交jdbc事务的解决办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring JPA无法提交jdbc事务的解决办法相关的知识,希望对你有一定的参考价值。

参考技术A 项目中使用了spring jpa与spring jdbc但在实际使用中发现spring jdbc中的事务没有被提交到,处理方式主要有以下几点

1. 确保工程中启用了事务

2.确保在方法上添加了事务注释

这两点在系统中都已经添加,但还是不生效,查看spring jpa的文档发现确实是支持jpa的事务和jdbc的事务 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/orm/jpa/JpaTransactionManager.html ,通过debug发现Jpa的事务处理主要在JpaTransactionManager.doBegin中,在执行时会判断是否使用jdbc的事务;

系统中指定了JpaTransactionManager但没有指定JpaDialect,如果不指定默认给的是DefaultJpaDialect,而DefaultJpaDialect中并不会对JdbcConnection做处理,所以就导致了jdbc事务无法提交,解决办法也比较简单手动指定jpaDialect为HibernateJpaDialect;

以上是关于Spring JPA无法提交jdbc事务的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

无法提交 JPA 事务:事务标记为 rollbackOnly

如何配置 Spring 使 JPA(Hibernate)和 JDBC(JdbcTemplate 或 MyBatis)共享同一个事务

Spring data JPA:未提交每条记录的事务

spring事务管理器

Spring 事务管理的为我们的提供了解决方案。

spring spring data jpa save操作事务