问题:

  

@Transactional
@Override
public PageLayUI saveLinkAndNodeInfo(Map<String, Object> linkNodeMap) {
LoginAppUser loginAppUser = AppUserUtil.getLoginAppUser();
PageLayUI plui=new PageLayUI();
JsonUtil jsonUtil = new JsonUtil();
try {
//判断链路对象不为空
if (ObjectUtils.isNotNull(linkNodeMap.get("bNetLink"))) {
ObjectMapper objectMapper = new ObjectMapper();
BFaultNetlink bFaultNetlink = this.saveOrEditFaultNetLinkInfo(objectMapper.convertValue(linkNodeMap.get("bNetLink"), BFaultNetlink.class));
//判断网络链路表信息是否添加成功
if (ObjectUtils.isNotNull(bFaultNetlink.getId())) {
List<BFaultNetnode> BFaultNetnodeList =jsonUtil.mapToList(linkNodeMap, BFaultNetnode.class, "bNetNodeList");
if (BFaultNetnodeList != null) {
BFaultNetnodeList.forEach(item->{
item.setId(UUIDUtils.getUUID());
item.setLinkId(bFaultNetlink.getId());
item.setCreateBy(loginAppUser.getUsername());
item.setCreateTime(new Date());
});
}
boolean bool=bFaultNetnodeServiceImpl.saveBatchNetNode(BFaultNetnodeList);
if (!bool) {
plui.setMsg("保存链路节点信息失败!");
throw new Exception("网络链路节点信息添加失败");
}else{
plui.setObject(bFaultNetlink);
plui.setMsg("保存网络链路及链路节点信息成功!");
}
}else{
plui.setMsg("保存网络链路信息失败!");
plui.setSuccess(false);
throw new Exception("保存网络链路失败");
}
}
}catch (Exception e){
e.printStackTrace();
}
return plui;
}

这个方法封装了主从表的数据添加的方法,但是不能够保持事务一致,主表成功,从表没有成功的问题!

解决方法:
  在封装的方法体 里面的catch 块中添加下面的这一部分 ,这是捕获异常,进行手动的事务回滚!
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();


不够明确的话希望各位大佬点评!