java - 在循环实体中进行不同的提交
问题描述
我必须在休眠状态下插入 4 个表,在其中两个表中我必须在循环中插入 n 条记录,但它只会让我进入最后一个。对于 bbdd 中的 substituRutaDiaRepository 和 substituRelRutaPtoRepository 表,我只得到最后一条记录。
知道如何对它们中的每一个进行交易吗?
我附上代码
@Transactional
@Override
public Long createRoute(CustomUser user, InputModalCrearRutaData inputRouteData) {
RouteDataBean newRoute = new RouteDataBean();
Long idRuta = null;
if (inputRouteData == null)
return null;
//Tenemos que insertar en varias tablas toda la info de las rutas
SustRuta newSustRuta = new SustRuta();
SustRutaPlan newSustRutaPlan = new SustRutaPlan();
SustRutaDia newSustRutaDia = new SustRutaDia();
SustRelRutaPto newSustRelRutaPto = new SustRelRutaPto();
SustPersJur newSustPersJur = new SustPersJur();
// Campos sust_ruta
newSustRuta.setTipoRuta(inputRouteData.getTipoRuta());
newSustRuta.setFAltaReg(new Date());
newSustRuta.setFActzReg(new Date());
newSustRuta.setFBajaReg(null);
newSustRuta.setIdUsuActz(user.getUserId());
idRuta = sustRutaRepository.save(newSustRuta).getIdRuta();
if(idRuta != null) {
//Campos sust_ruta_plan
newSustRutaPlan.setIdRutaPlan(idRuta);
newSustRutaPlan.setNomRutaPlan(inputRouteData.getNombreRuta());
newSustRutaPlan.setUngesId(inputRouteData.getUngesId() );
newSustRutaPlan.setDesRuta(inputRouteData.getDesRuta() );
newSustRutaPlan.setFreqRuta(inputRouteData.getFreqRuta() );
newSustRutaPlan.setPerRuta(inputRouteData.getPerRuta() );
newSustRutaPlan.setFIniRuta(inputRouteData.getFIniRuta() );
newSustRutaPlan.setMesIni(inputRouteData.getMesIni() );
newSustRutaPlan.setMesFin(inputRouteData.getMesFin() );
newSustRutaPlan.setIdOperRuta(inputRouteData.getIdOperRuta() );
newSustRutaPlan.setCodEstRuta(inputRouteData.getCodEstRuta() );
newSustRutaPlan.setFEstRuta(new Date() );
newSustRutaPlan.setFFinVig(inputRouteData.getFFinVig() );
newSustRutaPlan.setFAltaReg(new Date() );
newSustRutaPlan.setFActzReg(new Date() );
newSustRutaPlan.setFBajaReg(null );
newSustRutaPlan.setIdUsuActz(user.getUserId() );
sustRutaPlanRepository.save(newSustRutaPlan);
//Campos sust_ruta_dia (metemos un registro por cada dia
for(int i =0; i < inputRouteData.getDias().size(); i++ ) {
newSustRutaDia.setIdRuta(idRuta);
newSustRutaDia.setIdDia(inputRouteData.getDias().get(i) );
newSustRutaDia.setFAltaReg(new Date() );
newSustRutaDia.setFActzReg(new Date() );
newSustRutaDia.setFBajaReg(null );
newSustRutaDia.setIdUsuActz(user.getUserId() );
sustRutaDiaRepository.save(newSustRutaDia);
newSustRutaDia = new SustRutaDia();
}
//Campos sust_rel_ruta_pto
for(int i=0; i<inputRouteData.getListaContenedores().size(); i++) {
newSustRelRutaPto.setIdRuta(idRuta);
newSustRelRutaPto.setUngesId(inputRouteData.getListaContenedores().get(i).getUngesId());
newSustRelRutaPto.setCodIneMuni(inputRouteData.getListaContenedores().get(i).getCdMun());
newSustRelRutaPto.setCodCont(inputRouteData.getListaContenedores().get(i).getCodCont());
newSustRelRutaPto.setNumOrdPto(inputRouteData.getListaContenedores().get(i).getOrden());
newSustRelRutaPto.setCodEstRutpto(activa);
newSustRelRutaPto.setFEstRutpto(new Date());
newSustRelRutaPto.setFAltaReg(new Date() );
newSustRelRutaPto.setFActzReg(new Date() );
newSustRelRutaPto.setFBajaReg(null );
newSustRelRutaPto.setIdUsuActz(user.getUserId() );
sustRelRutaPtoRepository.save(newSustRelRutaPto);
newSustRelRutaPto = new SustRelRutaPto();
}
}
return idRuta;
}
解决方案
推荐阅读
- r - 在 R 中使用 SVM 进行股票预测 + 新闻情绪?
- c++ - 将矩阵转换为数组
- featuretools - 实体集中的 time_type 何时设置为 NumericTimeIndex 或 DatetimeTimeIndex?
- python - 如何创建特定的时间线?例如 (t, t+1, t+2, ....)
- django - 特定 Sender 的停止信号发送触发
- python - 如何检查一个元素是否是熊猫中的一个空列表?
- pandas - 统计每个月出现的次数
- c++11 - 为什么输出不一样?(将数组放入函数问题中)
- reactjs - 如何刷新访问令牌?(react app + asp.net 身份服务器)
- html - 如何将 api 端点添加到 HTML src 标签