问题遇到的现象和发生背景
在Spring中添加事务,发现会偶发性出现数据未成功更新的情况,但在日志中显示成功执行了sql。按网上的解决方法来手动开启提交事务也会出现一样的问题。但将事务取消在执行就能成功更新。请问如何在保留事务的前提下,修改代码
@Autowired
PlatformTransactionManager platformTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
@Override
// @Transactional(rollbackFor = Exception.class)
public HttpResult cooperationAdd(CooperationAdd add) {
// DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
try {
// List<Map<String, Object>> result = outCheckMapper.getFhpz(add.getPzh(), add.getSwh(), add.getCgddh(), add.getCgddhh());
//// if(result != null && result.size() != 0) {
//// list = result;
//// }
for(CG cg:add.getCglist()){
cooperationMapper.cgAdd(cg, add);
}
for(DE de:add.getDelist()){
cooperationMapper.deAdd(de);
}
for(TM tm:add.getTmlist()){
cooperationMapper.tmAdd(tm, add);
}
platformTransactionManager.commit(transactionStatus);
return HttpResult.ok();
}catch (Exception e){
platformTransactionManager.rollback(transactionStatus);
return HttpResult.error(e.getMessage());
}
}
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
使用注解和手动开启事务切换,但没效果