2011-07-08 19 views
0

我想我不明白的東西與未經檢查的異常。休眠未經檢查的異常沒有回滾

我正在使用spring/hibernate。

在一個事務中,我正在捕獲一個NullPointerException(這是一個未選中的),但在那時結束了,我的事務沒有被回滾。

是不是因爲我用NPE的方法捕捉了NPE? 這是我從其中i扔了在從所述一個的其他方法釣到一個IllegalArgumentException代碼的其他部分看到投擲它的唯一不同勢(和其與回滾結束。)

謝謝

回答

2

如果未捕獲的異常通過事務代理,Spring將回滾事務。

如果您捕獲包裝方法內的異常,則事務將不會自動回滾。

如果您出於某種原因需要捕獲異常,您可以重新拋出它,拋出另一個(考慮方法合約的情況)或者手動回滾事務。請記住,這最後一個選項打破了春天的透明度。