多查询和事务

时间:2017-01-03 21:39:55

标签: spring spring-boot spring-transactions

我对很多数据做了一些处理,所以我做了一个循环。

@Transactional
@Override
public void processPayment(List<Long> paymentsId, PaymentModeEnum paymentMode) throws ProcessPaymentException{
   ...
   processCreditCardPayment(payments);
}

private void processCreditCardPayment(List<Payment> payments) throws ProcessPaymentException {
    for (Payment payment : payments) {

         try {
              //save to db
         }catch (ProcessPaymentException ppe) {
         }

    }
}

ProcessPaymentException扩展了Exception

如果我循环播放10项,则在最后一项上发生错误。 一切都是回滚(我的所有项目)或只是错误的一个?

1 个答案:

答案 0 :(得分:0)

在这种情况下,不会回滚任何内容。这是因为你发现了异常并且它没有通过Spring事务边界。

Read here in Spring Docs

  

指示Spring Framework事务的推荐方法   交易工作要回滚的基础设施是   从当前正在执行的代码中抛出异常   交易的背景。 Spring Framework的交易   基础架构代码将捕获任何未处理的异常,因为它会冒泡   调用堆栈,并确定是否标记   回滚事务。

相关问题