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(); } } }