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 destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     TipoU tipoU;
     try {
       tipoU = em.getReference(TipoU.class, id);
       tipoU.getId();
     } catch (EntityNotFoundException enfe) {
       throw new NonexistentEntityException(
           "The tipoU with id " + id + " no longer exists.", enfe);
     }
     List<String> illegalOrphanMessages = null;
     Collection<Profesor> profesorCollectionOrphanCheck = tipoU.getProfesorCollection();
     for (Profesor profesorCollectionOrphanCheckProfesor : profesorCollectionOrphanCheck) {
       if (illegalOrphanMessages == null) {
         illegalOrphanMessages = new ArrayList<String>();
       }
       illegalOrphanMessages.add(
           "This TipoU ("
               + tipoU
               + ") cannot be destroyed since the Profesor "
               + profesorCollectionOrphanCheckProfesor
               + " in its profesorCollection field has a non-nullable tipoUid field.");
     }
     if (illegalOrphanMessages != null) {
       throw new IllegalOrphanException(illegalOrphanMessages);
     }
     em.remove(tipoU);
     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();
     }
   }
 }