请教下 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
当使用Spring配置事务时,如果在运行时出现回滚,Spring事务管理器会自动回滚事务,并在回滚过程中调用DataSource实现类中的rollback方法,以确保事务回滚成功。
如果您正在使用Druid作为数据源,并且在事务回滚期间遇到问题,可能是由于DruidPooledConnection对象已关闭而导致的。在事务回滚期间,DruidPooledConnection对象可能已经被关闭或释放,因此在回滚期间再次使用它可能会导致错误。
为了解决这个问题,您可以在Spring事务配置中使用DataSourceTransactionManager,并将数据源设置为Druid数据源。例如:
xml
Copy
在这个配置中,DataSourceTransactionManager作为Spring事务管理器,dataSource是Druid数据源。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。