public void create(TipoU tipoU) { if (tipoU.getProfesorCollection() == null) { tipoU.setProfesorCollection(new ArrayList<Profesor>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Collection<Profesor> attachedProfesorCollection = new ArrayList<Profesor>(); for (Profesor profesorCollectionProfesorToAttach : tipoU.getProfesorCollection()) { profesorCollectionProfesorToAttach = em.getReference( profesorCollectionProfesorToAttach.getClass(), profesorCollectionProfesorToAttach.getIdProfesor()); attachedProfesorCollection.add(profesorCollectionProfesorToAttach); } tipoU.setProfesorCollection(attachedProfesorCollection); em.persist(tipoU); for (Profesor profesorCollectionProfesor : tipoU.getProfesorCollection()) { TipoU oldTipoUidOfProfesorCollectionProfesor = profesorCollectionProfesor.getTipoUid(); profesorCollectionProfesor.setTipoUid(tipoU); profesorCollectionProfesor = em.merge(profesorCollectionProfesor); if (oldTipoUidOfProfesorCollectionProfesor != null) { oldTipoUidOfProfesorCollectionProfesor .getProfesorCollection() .remove(profesorCollectionProfesor); oldTipoUidOfProfesorCollectionProfesor = em.merge(oldTipoUidOfProfesorCollectionProfesor); } } em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } }
public void edit(TipoU tipoU) throws IllegalOrphanException, NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); TipoU persistentTipoU = em.find(TipoU.class, tipoU.getId()); Collection<Profesor> profesorCollectionOld = persistentTipoU.getProfesorCollection(); Collection<Profesor> profesorCollectionNew = tipoU.getProfesorCollection(); List<String> illegalOrphanMessages = null; for (Profesor profesorCollectionOldProfesor : profesorCollectionOld) { if (!profesorCollectionNew.contains(profesorCollectionOldProfesor)) { if (illegalOrphanMessages == null) { illegalOrphanMessages = new ArrayList<String>(); } illegalOrphanMessages.add( "You must retain Profesor " + profesorCollectionOldProfesor + " since its tipoUid field is not nullable."); } } if (illegalOrphanMessages != null) { throw new IllegalOrphanException(illegalOrphanMessages); } Collection<Profesor> attachedProfesorCollectionNew = new ArrayList<Profesor>(); for (Profesor profesorCollectionNewProfesorToAttach : profesorCollectionNew) { profesorCollectionNewProfesorToAttach = em.getReference( profesorCollectionNewProfesorToAttach.getClass(), profesorCollectionNewProfesorToAttach.getIdProfesor()); attachedProfesorCollectionNew.add(profesorCollectionNewProfesorToAttach); } profesorCollectionNew = attachedProfesorCollectionNew; tipoU.setProfesorCollection(profesorCollectionNew); tipoU = em.merge(tipoU); for (Profesor profesorCollectionNewProfesor : profesorCollectionNew) { if (!profesorCollectionOld.contains(profesorCollectionNewProfesor)) { TipoU oldTipoUidOfProfesorCollectionNewProfesor = profesorCollectionNewProfesor.getTipoUid(); profesorCollectionNewProfesor.setTipoUid(tipoU); profesorCollectionNewProfesor = em.merge(profesorCollectionNewProfesor); if (oldTipoUidOfProfesorCollectionNewProfesor != null && !oldTipoUidOfProfesorCollectionNewProfesor.equals(tipoU)) { oldTipoUidOfProfesorCollectionNewProfesor .getProfesorCollection() .remove(profesorCollectionNewProfesor); oldTipoUidOfProfesorCollectionNewProfesor = em.merge(oldTipoUidOfProfesorCollectionNewProfesor); } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = tipoU.getId(); if (findTipoU(id) == null) { throw new NonexistentEntityException("The tipoU with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }