public void edit(Timereport timereport) throws NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Timereport persistentTimereport = em.find(Timereport.class, timereport.getIdtimereport());
     Utilisateur idutilisateurOld = persistentTimereport.getIdutilisateur();
     Utilisateur idutilisateurNew = timereport.getIdutilisateur();
     Tache idtacheOld = persistentTimereport.getIdtache();
     Tache idtacheNew = timereport.getIdtache();
     if (idutilisateurNew != null) {
       idutilisateurNew =
           em.getReference(idutilisateurNew.getClass(), idutilisateurNew.getIdutilisateur());
       timereport.setIdutilisateur(idutilisateurNew);
     }
     if (idtacheNew != null) {
       idtacheNew = em.getReference(idtacheNew.getClass(), idtacheNew.getIdtache());
       timereport.setIdtache(idtacheNew);
     }
     timereport = em.merge(timereport);
     if (idutilisateurOld != null && !idutilisateurOld.equals(idutilisateurNew)) {
       idutilisateurOld.getTimereportCollection().remove(timereport);
       idutilisateurOld = em.merge(idutilisateurOld);
     }
     if (idutilisateurNew != null && !idutilisateurNew.equals(idutilisateurOld)) {
       idutilisateurNew.getTimereportCollection().add(timereport);
       idutilisateurNew = em.merge(idutilisateurNew);
     }
     if (idtacheOld != null && !idtacheOld.equals(idtacheNew)) {
       idtacheOld.getTimereportCollection().remove(timereport);
       idtacheOld = em.merge(idtacheOld);
     }
     if (idtacheNew != null && !idtacheNew.equals(idtacheOld)) {
       idtacheNew.getTimereportCollection().add(timereport);
       idtacheNew = em.merge(idtacheNew);
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       Integer id = timereport.getIdtimereport();
       if (findTimereport(id) == null) {
         throw new NonexistentEntityException(
             "The timereport with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }