我面临一些奇怪的问题..
让我们说:
@RequestMapping(value = "/do", method = RequestMethod.POST)
public void do() {
try {
Float x = 200;
Float y = 100;
TestObject x = new TestObject(x, y);
x.setX(50);
if (x.getX() > x.getY())
testService.save(x);
else
throw new Exception("ERROR");
}
catch (Exception e) {
errorsService.save(e);
}
}
两种save
方法都标记为@Transactional
。
问题:一旦代码抛出异常 - errorsService.save(e);
进行提交 - 将50
添加为TestObject
的x值。我试图声明@Transactional(rollbackFor = Exception.class)
- 没有成功。始终提交,无需回滚!
在所有其他方法中,交易没有任何问题 - 一切都很完美!
有什么建议吗?提前谢谢!
答案 0 :(得分:2)
对于要回滚的事务,需要从@Transactional方法内部抛出异常,这在您的情况下不会发生。