首页 > 解决方案 > 在循环实体中进行不同的提交

问题描述

我必须在休眠状态下插入 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;
}

标签: javahibernatespring-boot

解决方案


推荐阅读