public void edit(Groupe groupe) throws NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Groupe persistentGroupe = em.find(Groupe.class, groupe.getIdgroupe());
     Collection<Utilisateur> utilisateurCollectionOld =
         persistentGroupe.getUtilisateurCollection();
     Collection<Utilisateur> utilisateurCollectionNew = groupe.getUtilisateurCollection();
     Collection<Utilisateur> attachedUtilisateurCollectionNew = new ArrayList<Utilisateur>();
     for (Utilisateur utilisateurCollectionNewUtilisateurToAttach : utilisateurCollectionNew) {
       utilisateurCollectionNewUtilisateurToAttach =
           em.getReference(
               utilisateurCollectionNewUtilisateurToAttach.getClass(),
               utilisateurCollectionNewUtilisateurToAttach.getIdutilisateur());
       attachedUtilisateurCollectionNew.add(utilisateurCollectionNewUtilisateurToAttach);
     }
     utilisateurCollectionNew = attachedUtilisateurCollectionNew;
     groupe.setUtilisateurCollection(utilisateurCollectionNew);
     groupe = em.merge(groupe);
     for (Utilisateur utilisateurCollectionOldUtilisateur : utilisateurCollectionOld) {
       if (!utilisateurCollectionNew.contains(utilisateurCollectionOldUtilisateur)) {
         utilisateurCollectionOldUtilisateur.setIdgroupe(null);
         utilisateurCollectionOldUtilisateur = em.merge(utilisateurCollectionOldUtilisateur);
       }
     }
     for (Utilisateur utilisateurCollectionNewUtilisateur : utilisateurCollectionNew) {
       if (!utilisateurCollectionOld.contains(utilisateurCollectionNewUtilisateur)) {
         Groupe oldIdgroupeOfUtilisateurCollectionNewUtilisateur =
             utilisateurCollectionNewUtilisateur.getIdgroupe();
         utilisateurCollectionNewUtilisateur.setIdgroupe(groupe);
         utilisateurCollectionNewUtilisateur = em.merge(utilisateurCollectionNewUtilisateur);
         if (oldIdgroupeOfUtilisateurCollectionNewUtilisateur != null
             && !oldIdgroupeOfUtilisateurCollectionNewUtilisateur.equals(groupe)) {
           oldIdgroupeOfUtilisateurCollectionNewUtilisateur
               .getUtilisateurCollection()
               .remove(utilisateurCollectionNewUtilisateur);
           oldIdgroupeOfUtilisateurCollectionNewUtilisateur =
               em.merge(oldIdgroupeOfUtilisateurCollectionNewUtilisateur);
         }
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       Integer id = groupe.getIdgroupe();
       if (findGroupe(id) == null) {
         throw new NonexistentEntityException("The groupe with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void create(Groupe groupe) throws PreexistingEntityException, Exception {
   if (groupe.getUtilisateurCollection() == null) {
     groupe.setUtilisateurCollection(new ArrayList<Utilisateur>());
   }
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Collection<Utilisateur> attachedUtilisateurCollection = new ArrayList<Utilisateur>();
     for (Utilisateur utilisateurCollectionUtilisateurToAttach :
         groupe.getUtilisateurCollection()) {
       utilisateurCollectionUtilisateurToAttach =
           em.getReference(
               utilisateurCollectionUtilisateurToAttach.getClass(),
               utilisateurCollectionUtilisateurToAttach.getIdutilisateur());
       attachedUtilisateurCollection.add(utilisateurCollectionUtilisateurToAttach);
     }
     groupe.setUtilisateurCollection(attachedUtilisateurCollection);
     em.persist(groupe);
     for (Utilisateur utilisateurCollectionUtilisateur : groupe.getUtilisateurCollection()) {
       Groupe oldIdgroupeOfUtilisateurCollectionUtilisateur =
           utilisateurCollectionUtilisateur.getIdgroupe();
       utilisateurCollectionUtilisateur.setIdgroupe(groupe);
       utilisateurCollectionUtilisateur = em.merge(utilisateurCollectionUtilisateur);
       if (oldIdgroupeOfUtilisateurCollectionUtilisateur != null) {
         oldIdgroupeOfUtilisateurCollectionUtilisateur
             .getUtilisateurCollection()
             .remove(utilisateurCollectionUtilisateur);
         oldIdgroupeOfUtilisateurCollectionUtilisateur =
             em.merge(oldIdgroupeOfUtilisateurCollectionUtilisateur);
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     if (findGroupe(groupe.getIdgroupe()) != null) {
       throw new PreexistingEntityException("Groupe " + groupe + " already exists.", ex);
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }