Hibernate未经检查的异常未回滚

时间:2011-07-08 10:15:19

标签: java hibernate transactions rollback unchecked

我认为我不理解未经检查的异常。

我正在使用spring / hibernate。

在一个事务中,我正在捕获NullPointerException(因此未经检查),但最后我的事务没有回滚。

是不是因为我在投掷NPE的同一方法中捕获了NPE? 这是我从代码的另一部分看到的唯一不同之处,我抛出一个IllegalArgumentException,它从另一个抛出它的方法中捕获(并以回滚结束。)

谢谢,

1 个答案:

答案 0 :(得分:2)

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

如果在包装方法中捕获异常,则不会自动回滚事务。

如果由于某种原因确实需要捕获异常,则可以重新抛出异常,抛出另一个(考虑方法的合同有意义)或手动回滚事务。请记住,最后一个选项打破了春天的透明度。