【发布时间】:2019-12-07 16:34:16
【问题描述】:
@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 保存 object 并调用另一个函数 callToSomeOtherServer()。所以这是上层方法中事务的一部分。如果 callToSomeOtherServer() 失败并抛出 someException,则应回滚整个事务,并且保存的对象不应反映在 DB 中。
但这对我不起作用,对象反映在 DB 中。有人可以帮助我理解为什么它不起作用吗?
【问题讨论】:
-
代替rollbackFor = someException.class,试试rollbackFor = Exception.class
-
@dassum 我已经提到了这个。问题仍然存在!
-
试过了,还是不行@uneq95。
标签: java spring spring-transactions