public void create(TipoEstadoNormatividad tipoEstadoNormatividad)
     throws PreexistingEntityException, Exception {
   if (tipoEstadoNormatividad.getNormatividadList() == null) {
     tipoEstadoNormatividad.setNormatividadList(new ArrayList<Normatividad>());
   }
   if (tipoEstadoNormatividad.getSeguimientoNormatividadList() == null) {
     tipoEstadoNormatividad.setSeguimientoNormatividadList(
         new ArrayList<SeguimientoNormatividad>());
   }
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     List<Normatividad> attachedNormatividadList = new ArrayList<Normatividad>();
     for (Normatividad normatividadListNormatividadToAttach :
         tipoEstadoNormatividad.getNormatividadList()) {
       normatividadListNormatividadToAttach =
           em.getReference(
               normatividadListNormatividadToAttach.getClass(),
               normatividadListNormatividadToAttach.getId());
       attachedNormatividadList.add(normatividadListNormatividadToAttach);
     }
     tipoEstadoNormatividad.setNormatividadList(attachedNormatividadList);
     List<SeguimientoNormatividad> attachedSeguimientoNormatividadList =
         new ArrayList<SeguimientoNormatividad>();
     for (SeguimientoNormatividad seguimientoNormatividadListSeguimientoNormatividadToAttach :
         tipoEstadoNormatividad.getSeguimientoNormatividadList()) {
       seguimientoNormatividadListSeguimientoNormatividadToAttach =
           em.getReference(
               seguimientoNormatividadListSeguimientoNormatividadToAttach.getClass(),
               seguimientoNormatividadListSeguimientoNormatividadToAttach.getId());
       attachedSeguimientoNormatividadList.add(
           seguimientoNormatividadListSeguimientoNormatividadToAttach);
     }
     tipoEstadoNormatividad.setSeguimientoNormatividadList(attachedSeguimientoNormatividadList);
     em.persist(tipoEstadoNormatividad);
     for (Normatividad normatividadListNormatividad :
         tipoEstadoNormatividad.getNormatividadList()) {
       TipoEstadoNormatividad oldIdEstadoOfNormatividadListNormatividad =
           normatividadListNormatividad.getIdEstado();
       normatividadListNormatividad.setIdEstado(tipoEstadoNormatividad);
       normatividadListNormatividad = em.merge(normatividadListNormatividad);
       if (oldIdEstadoOfNormatividadListNormatividad != null) {
         oldIdEstadoOfNormatividadListNormatividad
             .getNormatividadList()
             .remove(normatividadListNormatividad);
         oldIdEstadoOfNormatividadListNormatividad =
             em.merge(oldIdEstadoOfNormatividadListNormatividad);
       }
     }
     for (SeguimientoNormatividad seguimientoNormatividadListSeguimientoNormatividad :
         tipoEstadoNormatividad.getSeguimientoNormatividadList()) {
       TipoEstadoNormatividad oldIdEstadoOfSeguimientoNormatividadListSeguimientoNormatividad =
           seguimientoNormatividadListSeguimientoNormatividad.getIdEstado();
       seguimientoNormatividadListSeguimientoNormatividad.setIdEstado(tipoEstadoNormatividad);
       seguimientoNormatividadListSeguimientoNormatividad =
           em.merge(seguimientoNormatividadListSeguimientoNormatividad);
       if (oldIdEstadoOfSeguimientoNormatividadListSeguimientoNormatividad != null) {
         oldIdEstadoOfSeguimientoNormatividadListSeguimientoNormatividad
             .getSeguimientoNormatividadList()
             .remove(seguimientoNormatividadListSeguimientoNormatividad);
         oldIdEstadoOfSeguimientoNormatividadListSeguimientoNormatividad =
             em.merge(oldIdEstadoOfSeguimientoNormatividadListSeguimientoNormatividad);
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     if (findTipoEstadoNormatividad(tipoEstadoNormatividad.getId()) != null) {
       throw new PreexistingEntityException(
           "TipoEstadoNormatividad " + tipoEstadoNormatividad + " already exists.", ex);
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void edit(TipoEstadoNormatividad tipoEstadoNormatividad)
     throws NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     TipoEstadoNormatividad persistentTipoEstadoNormatividad =
         em.find(TipoEstadoNormatividad.class, tipoEstadoNormatividad.getId());
     List<Normatividad> normatividadListOld =
         persistentTipoEstadoNormatividad.getNormatividadList();
     List<Normatividad> normatividadListNew = tipoEstadoNormatividad.getNormatividadList();
     List<SeguimientoNormatividad> seguimientoNormatividadListOld =
         persistentTipoEstadoNormatividad.getSeguimientoNormatividadList();
     List<SeguimientoNormatividad> seguimientoNormatividadListNew =
         tipoEstadoNormatividad.getSeguimientoNormatividadList();
     List<Normatividad> attachedNormatividadListNew = new ArrayList<Normatividad>();
     for (Normatividad normatividadListNewNormatividadToAttach : normatividadListNew) {
       normatividadListNewNormatividadToAttach =
           em.getReference(
               normatividadListNewNormatividadToAttach.getClass(),
               normatividadListNewNormatividadToAttach.getId());
       attachedNormatividadListNew.add(normatividadListNewNormatividadToAttach);
     }
     normatividadListNew = attachedNormatividadListNew;
     tipoEstadoNormatividad.setNormatividadList(normatividadListNew);
     List<SeguimientoNormatividad> attachedSeguimientoNormatividadListNew =
         new ArrayList<SeguimientoNormatividad>();
     for (SeguimientoNormatividad seguimientoNormatividadListNewSeguimientoNormatividadToAttach :
         seguimientoNormatividadListNew) {
       seguimientoNormatividadListNewSeguimientoNormatividadToAttach =
           em.getReference(
               seguimientoNormatividadListNewSeguimientoNormatividadToAttach.getClass(),
               seguimientoNormatividadListNewSeguimientoNormatividadToAttach.getId());
       attachedSeguimientoNormatividadListNew.add(
           seguimientoNormatividadListNewSeguimientoNormatividadToAttach);
     }
     seguimientoNormatividadListNew = attachedSeguimientoNormatividadListNew;
     tipoEstadoNormatividad.setSeguimientoNormatividadList(seguimientoNormatividadListNew);
     tipoEstadoNormatividad = em.merge(tipoEstadoNormatividad);
     for (Normatividad normatividadListOldNormatividad : normatividadListOld) {
       if (!normatividadListNew.contains(normatividadListOldNormatividad)) {
         normatividadListOldNormatividad.setIdEstado(null);
         normatividadListOldNormatividad = em.merge(normatividadListOldNormatividad);
       }
     }
     for (Normatividad normatividadListNewNormatividad : normatividadListNew) {
       if (!normatividadListOld.contains(normatividadListNewNormatividad)) {
         TipoEstadoNormatividad oldIdEstadoOfNormatividadListNewNormatividad =
             normatividadListNewNormatividad.getIdEstado();
         normatividadListNewNormatividad.setIdEstado(tipoEstadoNormatividad);
         normatividadListNewNormatividad = em.merge(normatividadListNewNormatividad);
         if (oldIdEstadoOfNormatividadListNewNormatividad != null
             && !oldIdEstadoOfNormatividadListNewNormatividad.equals(tipoEstadoNormatividad)) {
           oldIdEstadoOfNormatividadListNewNormatividad
               .getNormatividadList()
               .remove(normatividadListNewNormatividad);
           oldIdEstadoOfNormatividadListNewNormatividad =
               em.merge(oldIdEstadoOfNormatividadListNewNormatividad);
         }
       }
     }
     for (SeguimientoNormatividad seguimientoNormatividadListOldSeguimientoNormatividad :
         seguimientoNormatividadListOld) {
       if (!seguimientoNormatividadListNew.contains(
           seguimientoNormatividadListOldSeguimientoNormatividad)) {
         seguimientoNormatividadListOldSeguimientoNormatividad.setIdEstado(null);
         seguimientoNormatividadListOldSeguimientoNormatividad =
             em.merge(seguimientoNormatividadListOldSeguimientoNormatividad);
       }
     }
     for (SeguimientoNormatividad seguimientoNormatividadListNewSeguimientoNormatividad :
         seguimientoNormatividadListNew) {
       if (!seguimientoNormatividadListOld.contains(
           seguimientoNormatividadListNewSeguimientoNormatividad)) {
         TipoEstadoNormatividad
             oldIdEstadoOfSeguimientoNormatividadListNewSeguimientoNormatividad =
                 seguimientoNormatividadListNewSeguimientoNormatividad.getIdEstado();
         seguimientoNormatividadListNewSeguimientoNormatividad.setIdEstado(tipoEstadoNormatividad);
         seguimientoNormatividadListNewSeguimientoNormatividad =
             em.merge(seguimientoNormatividadListNewSeguimientoNormatividad);
         if (oldIdEstadoOfSeguimientoNormatividadListNewSeguimientoNormatividad != null
             && !oldIdEstadoOfSeguimientoNormatividadListNewSeguimientoNormatividad.equals(
                 tipoEstadoNormatividad)) {
           oldIdEstadoOfSeguimientoNormatividadListNewSeguimientoNormatividad
               .getSeguimientoNormatividadList()
               .remove(seguimientoNormatividadListNewSeguimientoNormatividad);
           oldIdEstadoOfSeguimientoNormatividadListNewSeguimientoNormatividad =
               em.merge(oldIdEstadoOfSeguimientoNormatividadListNewSeguimientoNormatividad);
         }
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       Integer id = tipoEstadoNormatividad.getId();
       if (findTipoEstadoNormatividad(id) == null) {
         throw new NonexistentEntityException(
             "The tipoEstadoNormatividad with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }