开发者社区> 问答> 正文

java 事务用.xml配置的方式怎么设置两个报错都能回滚?报错

"

我知道用注解的方式是这么写的:
@Transactional(rollbackFor={RuntimeException.class, Exception.class})
那么用xml配置该怎么写呢?
<span class=""img-wrap""><img referrerpolicy=""no-referrer"" data-src=""/img/bVbeT7x?w=1359&h=311"" src=""https://cdn.segmentfault.com/v-5e8d8dec/global/img/squares.svg"" alt=""图片描述"" title=""图片描述"" />
备注:这个CustomException继承自Exception

TbProduct product = this.addProduct(dto, user);
if(1==1){
    throw new CustomException(9999,"test");
}

按照下方配置,如果程序运行期间报错,不会回滚(应该是CustomException是Exception的子类,但是回滚只回滚CustomException造成的,但是如果我rollback-for="Exception"又会有问题,上面的addProduct()不会回滚)

<tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 传播行为 -->
            <tx:method name="*" rollback-for="com.mal.vo.CustomException" />
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="create*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
            <tx:method name="select*" propagation="SUPPORTS" read-only="true" />
            <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
        </tx:attributes>
    </tx:advice>

"

展开
收起
因为相信,所以看见。 2020-05-27 10:00:34 1001 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    "

    RuntimeException 是继承Exception类的。

    //抛出Exception或Exception所有的子类异常都会回滚。 @Transactional(rollbackFor=Exception.class)

    所以你的xml配置一个Exception类就可以了。

      <tx:method name="*" rollback-for="Exception"/>
    "
    2020-05-27 17:53:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载