public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Aplicacao aplicacao;
            try {
                aplicacao = em.getReference(Aplicacao.class, id);
                aplicacao.getCodigoAplicacao();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The aplicacao with id " + id + " no longer exists.", enfe);
            }
            List<String> illegalOrphanMessages = null;
            Collection<QualificadorAplicacao> qualificadorAplicacaoCollectionOrphanCheck = aplicacao.getQualificadorAplicacaoCollection();
            for (QualificadorAplicacao qualificadorAplicacaoCollectionOrphanCheckQualificadorAplicacao : qualificadorAplicacaoCollectionOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Aplicacao (" + aplicacao + ") cannot be destroyed since the QualificadorAplicacao " + qualificadorAplicacaoCollectionOrphanCheckQualificadorAplicacao + " in its qualificadorAplicacaoCollection field has a non-nullable codigoAplicacao field.");
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            Veiculo codigoVeiculo = aplicacao.getCodigoVeiculo();
            if (codigoVeiculo != null) {
                codigoVeiculo.getAplicacaoCollection().remove(aplicacao);
                codigoVeiculo = em.merge(codigoVeiculo);
            }
            Produto codigoProduto = aplicacao.getCodigoProduto();
            if (codigoProduto != null) {
                codigoProduto.getAplicacaoCollection().remove(aplicacao);
                codigoProduto = em.merge(codigoProduto);
            }
            Posicao codigoPosicao = aplicacao.getCodigoPosicao();
            if (codigoPosicao != null) {
                codigoPosicao.getAplicacaoCollection().remove(aplicacao);
                codigoPosicao = em.merge(codigoPosicao);
            }
            Pais codigoPais = aplicacao.getCodigoPais();
            if (codigoPais != null) {
                codigoPais.getAplicacaoCollection().remove(aplicacao);
                codigoPais = em.merge(codigoPais);
            }
            em.remove(aplicacao);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }