Hibernate Unchecked异常不回滚

发布于 2024-11-18 23:30:00 字数 236 浏览 2 评论 0原文

我想我不明白未经检查的例外的情况。

我正在使用春季/休眠。

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

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

谢谢,

I think i don't understand something with unchecked exception.

I'm using spring/hibernate.

In a transaction, i'm catching a NullPointerException (so an unchecked), but at then end my transaction is not rollbacked.

Is it because i catch the NPE inside the same method that throw the NPE ?
This is the only diffrent i see from an other part of the code where i throw an IllegalArgumentException that is catched in an other method from the one throwing it ( and which ends with a rollback. )

Thank you,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风月客 2024-11-25 23:30:00

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

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

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

Spring will rollback the transaction if an uncaught exception goes through the transactional proxy.

If you catch the exception inside the wrapped method, the transaction will not be rolled back automatically.

If you do need to catch the exception for some reason, you could either rethrow it, throw another one (one that makes sense considering the contract of the method) or rollback the transaction manually. Keep in mind that this last option breaks the transparancy of spring.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文