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 方法(childDAO.addToGiftList()santaDAO.addToSantaTodoList()的所有调用。除非运行时异常超过方法边界,否则事务提交除外。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部