public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Produto produto;
            try {
                produto = em.getReference(Produto.class, id);
                produto.getIdproduto();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The produto with id " + id + " no longer exists.", enfe);
            }
            List<String> illegalOrphanMessages = null;
            List<DetalheVenda> detalheVendaListOrphanCheck = produto.getDetalheVendaList();
            for (DetalheVenda detalheVendaListOrphanCheckDetalheVenda : detalheVendaListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Produto (" + produto + ") cannot be destroyed since the DetalheVenda " + detalheVendaListOrphanCheckDetalheVenda + " in its detalheVendaList field has a non-nullable produto field.");
            }
            List<Promocao> promocaoListOrphanCheck = produto.getPromocaoList();
            for (Promocao promocaoListOrphanCheckPromocao : promocaoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Produto (" + produto + ") cannot be destroyed since the Promocao " + promocaoListOrphanCheckPromocao + " in its promocaoList field has a non-nullable codProduto field.");
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            Unidade codUnidade = produto.getCodUnidade();
            if (codUnidade != null) {
                codUnidade.getProdutoList().remove(produto);
                codUnidade = em.merge(codUnidade);
            }
            Categoria codCategoria = produto.getCodCategoria();
            if (codCategoria != null) {
                codCategoria.getProdutoList().remove(produto);
                codCategoria = em.merge(codCategoria);
            }
            em.remove(produto);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }