@Transactional继续进行异常处理

时间:2014-11-06 14:49:03

标签: java hibernate spring-mvc spring-transactions

我面临一些奇怪的问题..

让我们说:

@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) - 没有成功。始终提交,无需回滚!

在所有其他方法中,交易没有任何问题 - 一切都很完美!

有什么建议吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

对于要回滚的事务,需要从@Transactional方法内部抛出异常,这在您的情况下不会发生。