我有一个事务为REQUIRES_NEW的方法插入数据,在这个方法外查询不到数据,不知道是什么原因,大家有遇到相同的么?具体是这样的:
有一个service类ServiceA里面有个方法事务是只读的,它里面调用了2个方法:newTxMethodA和methodB,newTxMethodA的事务设置成propagation="REQUIRES_NEW",而methodB没有事务,只是查询newTxMethodA提交后的数据。
public class TestService implements ITestService{
@Resource
private ITestService testService;
//事务是只读
public void cc(){
testService.newTxMethodA();//事务是propagation="REQUIRES_NEW",执行完会提交到数据库
methodB();//但在这个方法查询不到上面提交的数据,这是为什么呢?
}
public void newTxMethodA(){
//插入数据
}
public void methodB(){
//查询数据
}
}
我的事务配置是:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="invoke*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="newTx*" propagation="REQUIRES_NEW" />
<tx:method name="get*" read-only="true" />
<tx:method name="reset*" propagation="REQUIRED" />
<tx:method name="init*" propagation="REQUIRED" read-only="true"/>
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
有知道的大侠帮我分析是为什么么?