当一个方法被@Transactional注解并且出现运行时异常时,spring会吃掉该异常并抛出:
org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only
如何避免这种“一般”异常并传播原始异常,但保持回滚?
Thanks.
org.springframework.transaction.UnexpectedRollbackException:
事务静默回滚,因为它已被标记为
仅回滚
如果您有外部设备,则通常会发生这种情况@Transactional
方法调用内部@Transactional
方法。当内部方法抛出异常,但外部方法捕获该异常并正常返回时,Spring会感到困惑,不知道是否应该回滚或提交事务,因为这两种方法相互矛盾。 (内部方法说它要回滚,但外部方法说它要提交)
所以,检查是否有任何外部@Transactional
捕获异常的方法。如果是,则从外部方法重新抛出该异常,以便整个事务将回滚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)