public void create(Usuario usuario) throws PreexistingEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Investigador investigadorIdentificacion = usuario.getInvestigadorIdentificacion();
     if (investigadorIdentificacion != null) {
       investigadorIdentificacion =
           em.getReference(
               investigadorIdentificacion.getClass(),
               investigadorIdentificacion.getIdentificacion());
       usuario.setInvestigadorIdentificacion(investigadorIdentificacion);
     }
     em.persist(usuario);
     if (investigadorIdentificacion != null) {
       investigadorIdentificacion.getUsuarioList().add(usuario);
       investigadorIdentificacion = em.merge(investigadorIdentificacion);
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     if (findUsuario(usuario.getNombre()) != null) {
       throw new PreexistingEntityException("Usuario " + usuario + " already exists.", ex);
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void edit(Usuario usuario) throws NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Usuario persistentUsuario = em.find(Usuario.class, usuario.getNombre());
     Investigador investigadorIdentificacionOld =
         persistentUsuario.getInvestigadorIdentificacion();
     Investigador investigadorIdentificacionNew = usuario.getInvestigadorIdentificacion();
     if (investigadorIdentificacionNew != null) {
       investigadorIdentificacionNew =
           em.getReference(
               investigadorIdentificacionNew.getClass(),
               investigadorIdentificacionNew.getIdentificacion());
       usuario.setInvestigadorIdentificacion(investigadorIdentificacionNew);
     }
     usuario = em.merge(usuario);
     if (investigadorIdentificacionOld != null
         && !investigadorIdentificacionOld.equals(investigadorIdentificacionNew)) {
       investigadorIdentificacionOld.getUsuarioList().remove(usuario);
       investigadorIdentificacionOld = em.merge(investigadorIdentificacionOld);
     }
     if (investigadorIdentificacionNew != null
         && !investigadorIdentificacionNew.equals(investigadorIdentificacionOld)) {
       investigadorIdentificacionNew.getUsuarioList().add(usuario);
       investigadorIdentificacionNew = em.merge(investigadorIdentificacionNew);
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       String id = usuario.getNombre();
       if (findUsuario(id) == null) {
         throw new NonexistentEntityException("The usuario with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }