Spring Transaction @Transactional注释不起作用

时间:2019-07-30 09:58:18

标签: java spring spring-transactions


@Transactional(rollbackFor = someException.class)
public void methodA() throws someException {
    try {
        methodB();
    } catch (someException e) {
        throw e;
    }
}


public void methodB() throws someException {
    try {

        someManager.save(object); // This object should only save when the whole transaction is committed

        callToSomeOtherServer(); // This call fails and throws exception

    } catch () {
        throw new someException();
    }
}


据我了解,在 methodB()中,我们正在使用someManager保存对象,并调用另一个函数 callToSomeOtherServer()。因此,这是上层方法中事务的一部分。如果 callToSomeOtherServer()失败并抛出 someException ,则应回滚整个事务,并且保存的对象不应反映在数据库中。

但这对我不起作用,该对象反映在DB中。有人可以帮我弄明白为什么它不起作用吗?

1 个答案:

答案 0 :(得分:0)

尝试一下!
 @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED, readOnly = false, timeout = 100, rollbackFor = Exception.class)