Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

3. Autenticação e Autorização

A aplicação esta realizando login e logout, mas não esta validando quando digitamos a senha errada.

HTTP Status 500 - javax.persistence.NoResultException: No entity found for query

type Exception report

message javax.persistence.NoResultException: No entity found for query

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: javax.persistence.NoResultException: No entity found for query
    br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:122)
root cause

javax.persistence.NoResultException: No entity found for query
    org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:498)
    br.com.caelum.vraptor.dao.UsuarioDAO.busca(UsuarioDAO.java:42)
3 respostas

Ola Emiliano Carvalho !

Essa exception esta ocorrendo por que quando vc executa getSingleResult ele não tem dados para retornar.

Uma opção para resolver isso é a seguinte: No lugar do

getSingleResult

use

getResultList()

e no retorno, fazer algo como:

results.isEmpty() ? null : results.get(0)

Dessa forma vc pode retornar por exemplo: null e realizar a verificação se o usuário existe ou não no seu (filter ou controller) depende como você esta fazendo.

Essa é só uma idéia.

Abraço!

Obrigado Cristiano,

No caso é uma pegadinha da aula?

Pq o getSingleResult ou retorna a consulta ou nada, no caso gerando uma exceção (NoResultException), que era o que estava acontecendo sem ter sido levantada essa possibilidade durante a aula, da necessidade de tratar esta exceção .

solução!

Emiliano Carvalho

Sinceramente, não sei dizer se é uma pegadinha ou não.

É legal procurar na especificação o getSingleResult() e fazer um pente fino nele.

E também usar o forum como canal de tirar dúvidas e espalhar o conhecimento.

Abraço!