开发者社区> 问答> 正文

spring 配置事务,runtime回滚时rollback调用druid DruidPooledC

请教下 transactionInfo 为空,这个可能是哪里的问题导致的。

spring日志如下 2017-03-10 20:06:10 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Returning JDBC Connection to DataSource 2017-03-10 20:06:10 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Initiating transaction rollback 2017-03-10 20:06:10 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Rolling back JDBC transaction on Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@48d06ef3] 2017-03-10 20:06:10 DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Releasing JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@48d06ef3] after transaction 2017-03-10 20:06:10 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] Returning JDBC Connection to DataSource

但是数据库层面没有被回滚

原提问者GitHub用户Aurorai

展开
收起
山海行 2023-07-05 21:10:27 141 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    当使用Spring配置事务时,如果在运行时出现回滚,Spring事务管理器会自动回滚事务,并在回滚过程中调用DataSource实现类中的rollback方法,以确保事务回滚成功。

    如果您正在使用Druid作为数据源,并且在事务回滚期间遇到问题,可能是由于DruidPooledConnection对象已关闭而导致的。在事务回滚期间,DruidPooledConnection对象可能已经被关闭或释放,因此在回滚期间再次使用它可能会导致错误。
    为了解决这个问题,您可以在Spring事务配置中使用DataSourceTransactionManager,并将数据源设置为Druid数据源。例如:

    xml
    Copy






    在这个配置中,DataSourceTransactionManager作为Spring事务管理器,dataSource是Druid数据源。

    2023-07-30 10:07:03
    赞同 展开评论 打赏
  • 问题已解决,spring动态数据源问题, 因为没切换, 使用默认主库,导致事务丢失

    原回答者GitHub用户Aurorai

    2023-07-06 11:54:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多