Thi*_*yão 6 spring spring-boot
当一个方法被@Transactional 注释并且有运行时异常时,spring 吃掉这个异常并抛出:
org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only
Run Code Online (Sandbox Code Playgroud)
如何避免这种“一般”异常并传播原始异常,但保持回滚?
谢谢。
Ken*_*han 12
org.springframework.transaction.UnexpectedRollbackException:事务静默回滚,因为它已被标记为仅回滚
如果您有外部@Transactional方法调用内部@Transactional方法,通常会发生这种情况。当内部方法抛出异常,而外部方法捕获该异常并正常返回时,Spring很困惑,不知道是否应该回滚或提交事务,因为这两种方法相互矛盾。(内部方法说要回滚,但外部方法说要提交)
因此,请检查是否有任何@Transactional捕获异常的外部方法。如果是,则从外部方法重新抛出该异常,以便整个事务将回滚。
| 归档时间: |
|
| 查看次数: |
6795 次 |
| 最近记录: |