Java Transaction silently rolled back because it has been marked as rollback-only问题解决

问题描述:

org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only

问题分析:

1、嵌套的两个方法都加了@Transaction注解,事务嵌套导致了报错。

@Transactional
public void test1(){
    test2();
}
@Transactional
public void test2(){
    double n=1/0;
}

解决办法:

具体需求分为以下3种情况。

(1)仅仅解决这个报错,去掉其中一个方法的@Transaction注解。

public void test1(){
    test2();
}
@Transactional
public void test2(){
    double n=1/0;
}

(2)不想去掉两个方法的@Transaction注解,因为这两个方法可能需要单独调用,但是里面的方法报错,两个事务都需要回滚。这时候需要针对里面的方法报错进行手动回滚事务。

@Transactional
public void test1(){
    int n=1/0;
    try{
        test2();
    }catch(Exception e){
        e.printStackTrace();
        TransactionAspectSup
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值