public void edit(TipoClasePuc tipoClasePuc) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); TipoClasePuc persistentTipoClasePuc = em.find(TipoClasePuc.class, tipoClasePuc.getId()); List<ClasePuc> clasePucListOld = persistentTipoClasePuc.getClasePucList(); List<ClasePuc> clasePucListNew = tipoClasePuc.getClasePucList(); List<ClasePuc> attachedClasePucListNew = new ArrayList<ClasePuc>(); for (ClasePuc clasePucListNewClasePucToAttach : clasePucListNew) { clasePucListNewClasePucToAttach = em.getReference( clasePucListNewClasePucToAttach.getClass(), clasePucListNewClasePucToAttach.getId()); attachedClasePucListNew.add(clasePucListNewClasePucToAttach); } clasePucListNew = attachedClasePucListNew; tipoClasePuc.setClasePucList(clasePucListNew); tipoClasePuc = em.merge(tipoClasePuc); for (ClasePuc clasePucListOldClasePuc : clasePucListOld) { if (!clasePucListNew.contains(clasePucListOldClasePuc)) { clasePucListOldClasePuc.setIdClase(null); clasePucListOldClasePuc = em.merge(clasePucListOldClasePuc); } } for (ClasePuc clasePucListNewClasePuc : clasePucListNew) { if (!clasePucListOld.contains(clasePucListNewClasePuc)) { TipoClasePuc oldIdClaseOfClasePucListNewClasePuc = clasePucListNewClasePuc.getIdClase(); clasePucListNewClasePuc.setIdClase(tipoClasePuc); clasePucListNewClasePuc = em.merge(clasePucListNewClasePuc); if (oldIdClaseOfClasePucListNewClasePuc != null && !oldIdClaseOfClasePucListNewClasePuc.equals(tipoClasePuc)) { oldIdClaseOfClasePucListNewClasePuc.getClasePucList().remove(clasePucListNewClasePuc); oldIdClaseOfClasePucListNewClasePuc = em.merge(oldIdClaseOfClasePucListNewClasePuc); } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = tipoClasePuc.getId(); if (findTipoClasePuc(id) == null) { throw new NonexistentEntityException( "The tipoClasePuc with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }
public void create(TipoClasePuc tipoClasePuc) throws PreexistingEntityException, Exception { if (tipoClasePuc.getClasePucList() == null) { tipoClasePuc.setClasePucList(new ArrayList<ClasePuc>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); List<ClasePuc> attachedClasePucList = new ArrayList<ClasePuc>(); for (ClasePuc clasePucListClasePucToAttach : tipoClasePuc.getClasePucList()) { clasePucListClasePucToAttach = em.getReference( clasePucListClasePucToAttach.getClass(), clasePucListClasePucToAttach.getId()); attachedClasePucList.add(clasePucListClasePucToAttach); } tipoClasePuc.setClasePucList(attachedClasePucList); em.persist(tipoClasePuc); for (ClasePuc clasePucListClasePuc : tipoClasePuc.getClasePucList()) { TipoClasePuc oldIdClaseOfClasePucListClasePuc = clasePucListClasePuc.getIdClase(); clasePucListClasePuc.setIdClase(tipoClasePuc); clasePucListClasePuc = em.merge(clasePucListClasePuc); if (oldIdClaseOfClasePucListClasePuc != null) { oldIdClaseOfClasePucListClasePuc.getClasePucList().remove(clasePucListClasePuc); oldIdClaseOfClasePucListClasePuc = em.merge(oldIdClaseOfClasePucListClasePuc); } } em.getTransaction().commit(); } catch (Exception ex) { if (findTipoClasePuc(tipoClasePuc.getId()) != null) { throw new PreexistingEntityException( "TipoClasePuc " + tipoClasePuc + " already exists.", ex); } throw ex; } finally { if (em != null) { em.close(); } } }