public void create(Subgrupos subgrupos) {
   if (subgrupos.getProcesosList() == null) {
     subgrupos.setProcesosList(new ArrayList<Procesos>());
   }
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     List<Procesos> attachedProcesosList = new ArrayList<Procesos>();
     for (Procesos procesosListProcesosToAttach : subgrupos.getProcesosList()) {
       procesosListProcesosToAttach =
           em.getReference(
               procesosListProcesosToAttach.getClass(), procesosListProcesosToAttach.getId());
       attachedProcesosList.add(procesosListProcesosToAttach);
     }
     subgrupos.setProcesosList(attachedProcesosList);
     em.persist(subgrupos);
     for (Procesos procesosListProcesos : subgrupos.getProcesosList()) {
       Subgrupos oldSubgruposIdOfProcesosListProcesos = procesosListProcesos.getSubgruposId();
       procesosListProcesos.setSubgruposId(subgrupos);
       procesosListProcesos = em.merge(procesosListProcesos);
       if (oldSubgruposIdOfProcesosListProcesos != null) {
         oldSubgruposIdOfProcesosListProcesos.getProcesosList().remove(procesosListProcesos);
         oldSubgruposIdOfProcesosListProcesos = em.merge(oldSubgruposIdOfProcesosListProcesos);
       }
     }
     em.getTransaction().commit();
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Subgrupos subgrupos;
     try {
       subgrupos = em.getReference(Subgrupos.class, id);
       subgrupos.getId();
     } catch (EntityNotFoundException enfe) {
       throw new NonexistentEntityException(
           "The subgrupos with id " + id + " no longer exists.", enfe);
     }
     List<String> illegalOrphanMessages = null;
     List<Procesos> procesosListOrphanCheck = subgrupos.getProcesosList();
     for (Procesos procesosListOrphanCheckProcesos : procesosListOrphanCheck) {
       if (illegalOrphanMessages == null) {
         illegalOrphanMessages = new ArrayList<String>();
       }
       illegalOrphanMessages.add(
           "This Subgrupos ("
               + subgrupos
               + ") cannot be destroyed since the Procesos "
               + procesosListOrphanCheckProcesos
               + " in its procesosList field has a non-nullable subgruposId field.");
     }
     if (illegalOrphanMessages != null) {
       throw new IllegalOrphanException(illegalOrphanMessages);
     }
     em.remove(subgrupos);
     em.getTransaction().commit();
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void edit(Subgrupos subgrupos)
     throws IllegalOrphanException, NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Subgrupos persistentSubgrupos = em.find(Subgrupos.class, subgrupos.getId());
     List<Procesos> procesosListOld = persistentSubgrupos.getProcesosList();
     List<Procesos> procesosListNew = subgrupos.getProcesosList();
     List<String> illegalOrphanMessages = null;
     for (Procesos procesosListOldProcesos : procesosListOld) {
       if (!procesosListNew.contains(procesosListOldProcesos)) {
         if (illegalOrphanMessages == null) {
           illegalOrphanMessages = new ArrayList<String>();
         }
         illegalOrphanMessages.add(
             "You must retain Procesos "
                 + procesosListOldProcesos
                 + " since its subgruposId field is not nullable.");
       }
     }
     if (illegalOrphanMessages != null) {
       throw new IllegalOrphanException(illegalOrphanMessages);
     }
     List<Procesos> attachedProcesosListNew = new ArrayList<Procesos>();
     for (Procesos procesosListNewProcesosToAttach : procesosListNew) {
       procesosListNewProcesosToAttach =
           em.getReference(
               procesosListNewProcesosToAttach.getClass(),
               procesosListNewProcesosToAttach.getId());
       attachedProcesosListNew.add(procesosListNewProcesosToAttach);
     }
     procesosListNew = attachedProcesosListNew;
     subgrupos.setProcesosList(procesosListNew);
     subgrupos = em.merge(subgrupos);
     for (Procesos procesosListNewProcesos : procesosListNew) {
       if (!procesosListOld.contains(procesosListNewProcesos)) {
         Subgrupos oldSubgruposIdOfProcesosListNewProcesos =
             procesosListNewProcesos.getSubgruposId();
         procesosListNewProcesos.setSubgruposId(subgrupos);
         procesosListNewProcesos = em.merge(procesosListNewProcesos);
         if (oldSubgruposIdOfProcesosListNewProcesos != null
             && !oldSubgruposIdOfProcesosListNewProcesos.equals(subgrupos)) {
           oldSubgruposIdOfProcesosListNewProcesos
               .getProcesosList()
               .remove(procesosListNewProcesos);
           oldSubgruposIdOfProcesosListNewProcesos =
               em.merge(oldSubgruposIdOfProcesosListNewProcesos);
         }
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       Integer id = subgrupos.getId();
       if (findSubgrupos(id) == null) {
         throw new NonexistentEntityException(
             "The subgrupos with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }