设置班主任或者是修改,我们一般住在代码中是设置成saveAndUpdtate(),在遇到要设置多个的话这种方式是不太可行的,可以采取开启一个事务,先将旧数据拿到,将新数据插入,再用旧数据id去删除旧数据,定义一个全局flag为false,每个步骤将结果存到flag,用try catch 包着,最后判断flag的值为false时回滚,有异常时回滚,最可以解决问题。
@Transactional(rollbackFor = Exception.class)boolean flag = false;try { //判断是否有这个班级 ........ //先查询出原有数据 //构造参数 //新设置的数据先做添加 将旧数据删除掉 //删除之前的数据 先通过列表获取主键id } catch (ServiceException serviceException) { Console.error(serviceException.getMsg()); throw new ServiceException(serviceException.getMsg()); } catch (Exception ex) { Console.error(ex.getMessage()); throw new ServiceException(""); } if (!flag) { //触发回滚 throw new ServiceException(""); } return flag;