我显然需要一些关于事务回滚的帮助。我正在开发一个 Spring/JPA/Hibernate 应用程序。
对我来说,RuntimeException
即使他们被抓住了,也在回滚交易。我通过一些测试(不幸的是我不能把它们放在这里,因为我不再拥有它们)和读数来推断这一点。
但是我遇到了以下代码的另一种行为:
public class Service implements IService {
@Transactional
public void test()
{
// ...
try {
throw new RuntimeException();
} catch (RuntimeException re) {
}
foo.setBar(barValue);
this.fooDao.save(foo);
}
}
从控制器执行此操作后bar
,我的数据库中存在参数更改,这意味着事务尚未回滚。
现在的问题
捕获的 runtimeException 会导致回滚还是我错了?