首页 > 解决方案 > 事务管理器在提交第二个事务时触发异常时不回滚事务

问题描述

我在名为 DB1、DB2 的应用程序中使用了两个数据库。用于使用 org.springframework.data.transaction.ChainedTransactionManager 管理事务。

<bean id="transactionManager" class="org.springframework.data.transaction.ChainedTransactionManager">
    <constructor-arg>
        <list>
            <ref bean="DB1" />
            <ref bean="DB2" />
        </list>
    </constructor-arg>
</bean>

DB1、DB2是“org.springframework.orm.hibernate5.HibernateTransactionManager”类的引用。在我的代码中,我正在更新我的服务类中的两个数据库。据我所知,hibernate 以相反的顺序提交了事务,所以 DB2 成功提交,但是当 hibernate 将提交 DB1 时,然后得到这个异常

SQL Error: 12899, SQLState: 72000 
ORA-12899: value too large for column "SCHEMA"."TABLE_NAME"."COLUMN_1" (actual: 13, maximum: 12)

所以 DB1 得到回滚,但 DB2 没有得到回滚。

我想要——当 DB1 出现错误时,DB2 也会回滚。

标签: springhibernatetransactionmanager

解决方案


推荐阅读