2011-07-08 26 views
0

我想我不明白的东西与未经检查的异常。休眠未经检查的异常没有回滚

我正在使用spring/hibernate。

在一个事务中,我正在捕获一个NullPointerException(这是一个未选中的),但在那时结束了,我的事务没有被回滚。

是不是因为我用NPE的方法捕捉了NPE? 这是我从其中i扔了在从所述一个的其他方法钓到一个IllegalArgumentException代码的其他部分看到投掷它的唯一不同势(和其与回滚结束。)

谢谢

回答

2

如果未捕获的异常通过事务代理,Spring将回滚事务。

如果您捕获包装方法内的异常,则事务将不会自动回滚。

如果您出于某种原因需要捕获异常,您可以重新抛出它,抛出另一个(考虑方法合约的情况)或者手动回滚事务。请记住,这最后一个选项打破了春天的透明度。