4.2. 声明性为回滚配置事务


系统级别错误导致的例外,标记进行回滚的事务,并立即中止事务。您可以使用 @Transactional (dontRollbackOn=SomeException.class)rollbackOn 属性来覆盖默认行为。

先决条件

  • 具有 Quarkus Maven 项目。

流程

  • 使用 @Transactional (dontRollbackOn=SomeException.class) 指定不回滚事务的异常:

    src/main/java/org/acme/SantaClauseService.java 示例

    import javax.inject.Inject;
    import javax.enterprise.context.ApplicationScoped;
    import javax.transaction.Transactional;
    
    @ApplicationScoped
    public class SantaClausService {
    
        @Inject ChildDAO childDAO;
        @Inject SantaClausDAO santaDAO;
    
        @Transactional(dontRollbackOn=NonCriticalRuntimeException.class)
        public void getAGiftFromSanta(Child child, String giftDescription) throws Exception {
            Gift gift = childDAO.addToGiftList(child);
    
            // might throw a NonCriticalRuntimeException
            gift.setDescription(giftDescription);
    
            santaDAO.addToSantaTodoList(gift);
        }
    }
    Copy to Clipboard Toggle word wrap

    在本例中,事务上下文被传播到 @Transactional 方法中嵌套的所有调用(subDAO.addToGiftList ()santaDAO.addToSantaTodoList ())。事务提交,除非运行时异常超过方法边界。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat