public void edit(Cliente cliente) throws NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Cliente persistentCliente = em.find(Cliente.class, cliente.getIdCliente());
     List<Venta> ventaListOld = persistentCliente.getVentaList();
     List<Venta> ventaListNew = cliente.getVentaList();
     List<Venta> attachedVentaListNew = new ArrayList<Venta>();
     for (Venta ventaListNewVentaToAttach : ventaListNew) {
       ventaListNewVentaToAttach =
           em.getReference(
               ventaListNewVentaToAttach.getClass(), ventaListNewVentaToAttach.getIdVenta());
       attachedVentaListNew.add(ventaListNewVentaToAttach);
     }
     ventaListNew = attachedVentaListNew;
     cliente.setVentaList(ventaListNew);
     cliente = em.merge(cliente);
     for (Venta ventaListOldVenta : ventaListOld) {
       if (!ventaListNew.contains(ventaListOldVenta)) {
         ventaListOldVenta.setIdCliente(null);
         ventaListOldVenta = em.merge(ventaListOldVenta);
       }
     }
     for (Venta ventaListNewVenta : ventaListNew) {
       if (!ventaListOld.contains(ventaListNewVenta)) {
         Cliente oldIdClienteOfVentaListNewVenta = ventaListNewVenta.getIdCliente();
         ventaListNewVenta.setIdCliente(cliente);
         ventaListNewVenta = em.merge(ventaListNewVenta);
         if (oldIdClienteOfVentaListNewVenta != null
             && !oldIdClienteOfVentaListNewVenta.equals(cliente)) {
           oldIdClienteOfVentaListNewVenta.getVentaList().remove(ventaListNewVenta);
           oldIdClienteOfVentaListNewVenta = em.merge(oldIdClienteOfVentaListNewVenta);
         }
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       String id = cliente.getIdCliente();
       if (findCliente(id) == null) {
         throw new NonexistentEntityException("The cliente with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void create(Cliente cliente) throws PreexistingEntityException, Exception {
   if (cliente.getVentaList() == null) {
     cliente.setVentaList(new ArrayList<Venta>());
   }
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     List<Venta> attachedVentaList = new ArrayList<Venta>();
     for (Venta ventaListVentaToAttach : cliente.getVentaList()) {
       ventaListVentaToAttach =
           em.getReference(ventaListVentaToAttach.getClass(), ventaListVentaToAttach.getIdVenta());
       attachedVentaList.add(ventaListVentaToAttach);
     }
     cliente.setVentaList(attachedVentaList);
     em.persist(cliente);
     for (Venta ventaListVenta : cliente.getVentaList()) {
       Cliente oldIdClienteOfVentaListVenta = ventaListVenta.getIdCliente();
       ventaListVenta.setIdCliente(cliente);
       ventaListVenta = em.merge(ventaListVenta);
       if (oldIdClienteOfVentaListVenta != null) {
         oldIdClienteOfVentaListVenta.getVentaList().remove(ventaListVenta);
         oldIdClienteOfVentaListVenta = em.merge(oldIdClienteOfVentaListVenta);
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     if (findCliente(cliente.getIdCliente()) != null) {
       throw new PreexistingEntityException("Cliente " + cliente + " already exists.", ex);
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }