gpt4 book ai didi

java - Spring事务回滚不起作用

转载 作者:行者123 更新时间:2023-12-01 18:22:18 25 4
gpt4 key购买 nike

我有以下线程和事务方法,我抛出了一个异常来测试数据库插入的回滚,但没有任何改变。我错过了什么?

public class CleaningThread extends Thread {

public void run() {
try {
doJob();
} catch (Exception e) {
e.printStackTrace();
}
}

@Transactional(rollbackFor=Exception.class)
private void doJob() throws Exception {

//INSERT OPERATION
final BatchSqlUpdate bs = new BatchSqlUpdate
bs.flush()

throw new Exception("Custom exception")

//UPDATE

}

}

应用程序上下文:

 <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:conf/offclear.properties</value>
</list>
</property>
</bean>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
</bean>

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="cleaningThread" class="CleaningThread" scope="prototype"/>

使用Spring 3.1

最佳答案

您正在从同一类的 run() 方法调用 doJob() 方法。这就是为什么你要使用真正的方法,而不是代理方法。

其实这个问题已经在这个主题中涵盖了:One Service method invoke inner multiple method for Spring transaction

关于java - Spring事务回滚不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com