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(); } } }