public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Pedido pedido;
     try {
       pedido = em.getReference(Pedido.class, id);
       pedido.getIdpedido();
     } catch (EntityNotFoundException enfe) {
       throw new NonexistentEntityException(
           "The pedido with id " + id + " no longer exists.", enfe);
     }
     List<String> illegalOrphanMessages = null;
     List<Factura> facturaListOrphanCheck = pedido.getFacturaList();
     for (Factura facturaListOrphanCheckFactura : facturaListOrphanCheck) {
       if (illegalOrphanMessages == null) {
         illegalOrphanMessages = new ArrayList<String>();
       }
       illegalOrphanMessages.add(
           "This Pedido ("
               + pedido
               + ") cannot be destroyed since the Factura "
               + facturaListOrphanCheckFactura
               + " in its facturaList field has a non-nullable idPedido field.");
     }
     List<ArticuloTalla> articuloTallaListOrphanCheck = pedido.getArticuloTallaList();
     for (ArticuloTalla articuloTallaListOrphanCheckArticuloTalla : articuloTallaListOrphanCheck) {
       if (illegalOrphanMessages == null) {
         illegalOrphanMessages = new ArrayList<String>();
       }
       illegalOrphanMessages.add(
           "This Pedido ("
               + pedido
               + ") cannot be destroyed since the ArticuloTalla "
               + articuloTallaListOrphanCheckArticuloTalla
               + " in its articuloTallaList field has a non-nullable idPedido field.");
     }
     if (illegalOrphanMessages != null) {
       throw new IllegalOrphanException(illegalOrphanMessages);
     }
     Tienda idtienda = pedido.getIdtienda();
     if (idtienda != null) {
       idtienda.getPedidoList().remove(pedido);
       idtienda = em.merge(idtienda);
     }
     em.remove(pedido);
     em.getTransaction().commit();
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void create(Pedido pedido) {
   if (pedido.getFacturaList() == null) {
     pedido.setFacturaList(new ArrayList<Factura>());
   }
   if (pedido.getArticuloTallaList() == null) {
     pedido.setArticuloTallaList(new ArrayList<ArticuloTalla>());
   }
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Tienda idtienda = pedido.getIdtienda();
     if (idtienda != null) {
       idtienda = em.getReference(idtienda.getClass(), idtienda.getCodigo());
       pedido.setIdtienda(idtienda);
     }
     List<Factura> attachedFacturaList = new ArrayList<Factura>();
     for (Factura facturaListFacturaToAttach : pedido.getFacturaList()) {
       facturaListFacturaToAttach =
           em.getReference(
               facturaListFacturaToAttach.getClass(), facturaListFacturaToAttach.getIdfactura());
       attachedFacturaList.add(facturaListFacturaToAttach);
     }
     pedido.setFacturaList(attachedFacturaList);
     List<ArticuloTalla> attachedArticuloTallaList = new ArrayList<ArticuloTalla>();
     for (ArticuloTalla articuloTallaListArticuloTallaToAttach : pedido.getArticuloTallaList()) {
       articuloTallaListArticuloTallaToAttach =
           em.getReference(
               articuloTallaListArticuloTallaToAttach.getClass(),
               articuloTallaListArticuloTallaToAttach.getIdarticuloTalla());
       attachedArticuloTallaList.add(articuloTallaListArticuloTallaToAttach);
     }
     pedido.setArticuloTallaList(attachedArticuloTallaList);
     em.persist(pedido);
     if (idtienda != null) {
       idtienda.getPedidoList().add(pedido);
       idtienda = em.merge(idtienda);
     }
     for (Factura facturaListFactura : pedido.getFacturaList()) {
       Pedido oldIdPedidoOfFacturaListFactura = facturaListFactura.getIdPedido();
       facturaListFactura.setIdPedido(pedido);
       facturaListFactura = em.merge(facturaListFactura);
       if (oldIdPedidoOfFacturaListFactura != null) {
         oldIdPedidoOfFacturaListFactura.getFacturaList().remove(facturaListFactura);
         oldIdPedidoOfFacturaListFactura = em.merge(oldIdPedidoOfFacturaListFactura);
       }
     }
     for (ArticuloTalla articuloTallaListArticuloTalla : pedido.getArticuloTallaList()) {
       Pedido oldIdPedidoOfArticuloTallaListArticuloTalla =
           articuloTallaListArticuloTalla.getIdPedido();
       articuloTallaListArticuloTalla.setIdPedido(pedido);
       articuloTallaListArticuloTalla = em.merge(articuloTallaListArticuloTalla);
       if (oldIdPedidoOfArticuloTallaListArticuloTalla != null) {
         oldIdPedidoOfArticuloTallaListArticuloTalla
             .getArticuloTallaList()
             .remove(articuloTallaListArticuloTalla);
         oldIdPedidoOfArticuloTallaListArticuloTalla =
             em.merge(oldIdPedidoOfArticuloTallaListArticuloTalla);
       }
     }
     em.getTransaction().commit();
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }
 public void edit(Pedido pedido)
     throws IllegalOrphanException, NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Pedido persistentPedido = em.find(Pedido.class, pedido.getIdpedido());
     Tienda idtiendaOld = persistentPedido.getIdtienda();
     Tienda idtiendaNew = pedido.getIdtienda();
     List<Factura> facturaListOld = persistentPedido.getFacturaList();
     List<Factura> facturaListNew = pedido.getFacturaList();
     List<ArticuloTalla> articuloTallaListOld = persistentPedido.getArticuloTallaList();
     List<ArticuloTalla> articuloTallaListNew = pedido.getArticuloTallaList();
     List<String> illegalOrphanMessages = null;
     for (Factura facturaListOldFactura : facturaListOld) {
       if (!facturaListNew.contains(facturaListOldFactura)) {
         if (illegalOrphanMessages == null) {
           illegalOrphanMessages = new ArrayList<String>();
         }
         illegalOrphanMessages.add(
             "You must retain Factura "
                 + facturaListOldFactura
                 + " since its idPedido field is not nullable.");
       }
     }
     for (ArticuloTalla articuloTallaListOldArticuloTalla : articuloTallaListOld) {
       if (!articuloTallaListNew.contains(articuloTallaListOldArticuloTalla)) {
         if (illegalOrphanMessages == null) {
           illegalOrphanMessages = new ArrayList<String>();
         }
         illegalOrphanMessages.add(
             "You must retain ArticuloTalla "
                 + articuloTallaListOldArticuloTalla
                 + " since its idPedido field is not nullable.");
       }
     }
     if (illegalOrphanMessages != null) {
       throw new IllegalOrphanException(illegalOrphanMessages);
     }
     if (idtiendaNew != null) {
       idtiendaNew = em.getReference(idtiendaNew.getClass(), idtiendaNew.getCodigo());
       pedido.setIdtienda(idtiendaNew);
     }
     List<Factura> attachedFacturaListNew = new ArrayList<Factura>();
     for (Factura facturaListNewFacturaToAttach : facturaListNew) {
       facturaListNewFacturaToAttach =
           em.getReference(
               facturaListNewFacturaToAttach.getClass(),
               facturaListNewFacturaToAttach.getIdfactura());
       attachedFacturaListNew.add(facturaListNewFacturaToAttach);
     }
     facturaListNew = attachedFacturaListNew;
     pedido.setFacturaList(facturaListNew);
     List<ArticuloTalla> attachedArticuloTallaListNew = new ArrayList<ArticuloTalla>();
     for (ArticuloTalla articuloTallaListNewArticuloTallaToAttach : articuloTallaListNew) {
       articuloTallaListNewArticuloTallaToAttach =
           em.getReference(
               articuloTallaListNewArticuloTallaToAttach.getClass(),
               articuloTallaListNewArticuloTallaToAttach.getIdarticuloTalla());
       attachedArticuloTallaListNew.add(articuloTallaListNewArticuloTallaToAttach);
     }
     articuloTallaListNew = attachedArticuloTallaListNew;
     pedido.setArticuloTallaList(articuloTallaListNew);
     pedido = em.merge(pedido);
     if (idtiendaOld != null && !idtiendaOld.equals(idtiendaNew)) {
       idtiendaOld.getPedidoList().remove(pedido);
       idtiendaOld = em.merge(idtiendaOld);
     }
     if (idtiendaNew != null && !idtiendaNew.equals(idtiendaOld)) {
       idtiendaNew.getPedidoList().add(pedido);
       idtiendaNew = em.merge(idtiendaNew);
     }
     for (Factura facturaListNewFactura : facturaListNew) {
       if (!facturaListOld.contains(facturaListNewFactura)) {
         Pedido oldIdPedidoOfFacturaListNewFactura = facturaListNewFactura.getIdPedido();
         facturaListNewFactura.setIdPedido(pedido);
         facturaListNewFactura = em.merge(facturaListNewFactura);
         if (oldIdPedidoOfFacturaListNewFactura != null
             && !oldIdPedidoOfFacturaListNewFactura.equals(pedido)) {
           oldIdPedidoOfFacturaListNewFactura.getFacturaList().remove(facturaListNewFactura);
           oldIdPedidoOfFacturaListNewFactura = em.merge(oldIdPedidoOfFacturaListNewFactura);
         }
       }
     }
     for (ArticuloTalla articuloTallaListNewArticuloTalla : articuloTallaListNew) {
       if (!articuloTallaListOld.contains(articuloTallaListNewArticuloTalla)) {
         Pedido oldIdPedidoOfArticuloTallaListNewArticuloTalla =
             articuloTallaListNewArticuloTalla.getIdPedido();
         articuloTallaListNewArticuloTalla.setIdPedido(pedido);
         articuloTallaListNewArticuloTalla = em.merge(articuloTallaListNewArticuloTalla);
         if (oldIdPedidoOfArticuloTallaListNewArticuloTalla != null
             && !oldIdPedidoOfArticuloTallaListNewArticuloTalla.equals(pedido)) {
           oldIdPedidoOfArticuloTallaListNewArticuloTalla
               .getArticuloTallaList()
               .remove(articuloTallaListNewArticuloTalla);
           oldIdPedidoOfArticuloTallaListNewArticuloTalla =
               em.merge(oldIdPedidoOfArticuloTallaListNewArticuloTalla);
         }
       }
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       Integer id = pedido.getIdpedido();
       if (findPedido(id) == null) {
         throw new NonexistentEntityException("The pedido with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }