当前使用版本(必填,否则不予处理)
3.5.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
在嵌套事务情况下,针对批量保存数据时,对于异常捕获时,会发生
Transaction rolled back because it has been marked as rollback-only
原因是
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