public void create(Clasedatos clasedatos) { if (clasedatos.getProcesosList() == null) { clasedatos.setProcesosList(new ArrayList<Procesos>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Entidad entidadId = clasedatos.getEntidadId(); if (entidadId != null) { entidadId = em.getReference(entidadId.getClass(), entidadId.getId()); clasedatos.setEntidadId(entidadId); } List<Procesos> attachedProcesosList = new ArrayList<Procesos>(); for (Procesos procesosListProcesosToAttach : clasedatos.getProcesosList()) { procesosListProcesosToAttach = em.getReference( procesosListProcesosToAttach.getClass(), procesosListProcesosToAttach.getId()); attachedProcesosList.add(procesosListProcesosToAttach); } clasedatos.setProcesosList(attachedProcesosList); em.persist(clasedatos); if (entidadId != null) { entidadId.getClasedatosList().add(clasedatos); entidadId = em.merge(entidadId); } for (Procesos procesosListProcesos : clasedatos.getProcesosList()) { procesosListProcesos.getClasedatosList().add(clasedatos); procesosListProcesos = em.merge(procesosListProcesos); } em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } }
public void edit(Clasedatos clasedatos) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Clasedatos persistentClasedatos = em.find(Clasedatos.class, clasedatos.getId()); Entidad entidadIdOld = persistentClasedatos.getEntidadId(); Entidad entidadIdNew = clasedatos.getEntidadId(); List<Procesos> procesosListOld = persistentClasedatos.getProcesosList(); List<Procesos> procesosListNew = clasedatos.getProcesosList(); if (entidadIdNew != null) { entidadIdNew = em.getReference(entidadIdNew.getClass(), entidadIdNew.getId()); clasedatos.setEntidadId(entidadIdNew); } List<Procesos> attachedProcesosListNew = new ArrayList<Procesos>(); for (Procesos procesosListNewProcesosToAttach : procesosListNew) { procesosListNewProcesosToAttach = em.getReference( procesosListNewProcesosToAttach.getClass(), procesosListNewProcesosToAttach.getId()); attachedProcesosListNew.add(procesosListNewProcesosToAttach); } procesosListNew = attachedProcesosListNew; clasedatos.setProcesosList(procesosListNew); clasedatos = em.merge(clasedatos); if (entidadIdOld != null && !entidadIdOld.equals(entidadIdNew)) { entidadIdOld.getClasedatosList().remove(clasedatos); entidadIdOld = em.merge(entidadIdOld); } if (entidadIdNew != null && !entidadIdNew.equals(entidadIdOld)) { entidadIdNew.getClasedatosList().add(clasedatos); entidadIdNew = em.merge(entidadIdNew); } for (Procesos procesosListOldProcesos : procesosListOld) { if (!procesosListNew.contains(procesosListOldProcesos)) { procesosListOldProcesos.getClasedatosList().remove(clasedatos); procesosListOldProcesos = em.merge(procesosListOldProcesos); } } for (Procesos procesosListNewProcesos : procesosListNew) { if (!procesosListOld.contains(procesosListNewProcesos)) { procesosListNewProcesos.getClasedatosList().add(clasedatos); procesosListNewProcesos = em.merge(procesosListNewProcesos); } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = clasedatos.getId(); if (findClasedatos(id) == null) { throw new NonexistentEntityException( "The clasedatos with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }