@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中。有人可以帮我弄明白为什么它不起作用吗?
答案 0 :(得分:0)
尝试一下!
@Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED, readOnly = false, timeout = 100, rollbackFor = Exception.class)