我显然需要一些关于事务回滚的帮助。我正在研究Spring/JPA/Hibernate应用程序。回滚捕获的RuntimeException
对我来说,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
参数的变化是出现在我的数据库,意味着交易尚未rollbacked。
现在的问题
难道一个擦肩而过的RuntimeException导致回滚还是我错了?
也许我只是不明白这里发生了什么,但是你不需要将回滚代码放在catch块中? – 2013-04-22 16:02:36