当前使用版本(必填,否则不予处理)

3.5.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

在嵌套事务情况下,针对批量保存数据时,对于异常捕获时,会发生 Transaction rolled back because it has been marked as rollback-only 原因是 MyBatis-Plus 希望提供一个批量保存没有事务的方法,让使用者自行自定事务类型 saveOrUpdateBatch默认是有事务的,并且不支持使用者自定义事务传播机制。

重现步骤(如果有就写完整)

在嵌套事务情况下,针对批量保存数据发生异常时,对于异常捕获,会发生异常

报错信息

Transaction rolled back because it has been marked as rollback-only

Comment From: qmdx

简单的移除也会带来新的问题,除了移除注解是否还有其它建议?

Comment From: fulracoco

@Bean("")
public TransactionTemplate transactionTemplate(@Qualifier("transactionManager") DataSourceTransactionManager manager) {
    return new TransactionTemplate(manager);
}

@Bean("transactionNewTemplate")
public TransactionTemplate transactionNewTemplate(@Qualifier("transactionManager") DataSourceTransactionManager manager) {

    TransactionTemplate template = new TransactionTemplate(manager);
    template.setPropagationBehavior(PROPAGATION_REQUIRES_NEW);
    return template;
}

@Bean("transactionMandatoryTemplate")
public TransactionTemplate transactionMandatoryTemplate(@Qualifier("transactionManager") DataSourceTransactionManager manager) {
    TransactionTemplate template = new TransactionTemplate(manager);
    template.setPropagationBehavior(PROPAGATION_MANDATORY);
    return template;
}

不使用事务的代码xxx transactionTemplate.execute(transaction -> { 需要使用事务的地方 insert update等 return null; }); 不使用事务的代码xxx

Comment From: huayanYu

可以用com.baomidou.mybatisplus.extension.toolkit.Db