Verificar no banco sem disparar Exception

5 respostas
carlos_chea

pessoal to usando o hibernate pra persistir os meus dados no banco…
acontece que tem uns dados q eu presiso verificar e se tiver remover do banco, e dar prosegmento a função…

so que sempre dispara uma Exception

o meu codigo é esse:

em = getEntityManager();
    em.getTransaction().begin();

    Admins Admins = new Admins();
    Funcionario funcionario= new Funcionario ();
    Query q = em.createQuery("from Admins where funcionario_id = '"+id+"'");
    if (q.getSingleResult() != null){
        admin = (Admins) q.getSingleResult();
        em.remove(admin);
    }
    q = em.createQuery("from Funcionario where id = '"+id+"'"); 
    funcionario= (Funcionario) q.getSingleResult();
    em.remove(funcionario);
    em.getTransaction().commit();

5 Respostas

Hebert_Coelho

getSingleResult ele dispara duas exception por padrão. Uma caso não encontre ninguém e outra para caso encontre mais que um resultado.

Dá uma olhada aqui: JPA Consultas e Dicas.

carlos_chea

existe outro método que me retorne null, ou algo do tipo, caso ele ñ encontre nada na tabela persistida?

Hebert_Coelho

carlos_chea:
existe outro método que me retorne null, ou algo do tipo, caso ele ñ encontre nada na tabela persistida?
Só se for na gambiarra. Utilizar o getResultList e veja se a lista está vazia. ^^

E

Use getResultList e veja se o resultado esperado tem 0, 1 ou mais resultados. Se for zero, não achou, se for maior que 1, tem mais resultados que o esperado, e se for 1, fica do jeito que você quer.

carlos_chea

Obrigado entanglement!!! resolveu o meu problema!!!

Criado 1 de junho de 2012
Ultima resposta 1 de jun. de 2012
Respostas 5
Participantes 3