Duvida no Query.getSingleResult()?

4 respostas
dijava

pessoal tem uma query q me retorna um objeto, so q se tiver um parametro errado ele da “javax.persistence.NoResultException” eu queria que ele me retornasse nullo ! eu tenho que usar um try para isso mesmo ? ou como faco para na hora do meu Query.getSingleResult() ele retornar nullo sem dar erro ?

Caused by: javax.persistence.NoResultException: No entity found for query
	at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:275)

4 Respostas

Tiburcio_Mancha

vc vai mesmo que usar um bloco try/catch…

no catch vc trata a excessão NoResultException setando o objeto null…

dijava

é andei procurando, e so isso mesmo q eu vi, muito esquesito e feio, mas o getResultList() retorna nullo !

dev.rafael

Query.getResultList() não retorna null, ele retorna uma lista vazia em caso não hajam resultados p/ a query. Agora o Query.getSingleResult() lançar uma exceção quando nenhum resultado é encontrado está correto. O Java não possui meios eficientes de se implementar NullObject então notificar da ausência de resultados por meio de uma exceção me parece melhor q retornar null. Afinal de qualquer forma vc vai precisar escrever um código só p/ testar se a query retornou algum resultado, então q seja um código dedicado a esse tipo de checagem como um bloco try/catch.

bzy

E também getSingleResult() é para ser usado em caso de certeza do retorno de um objeto.
Retornar nenhum ou mais de um vai gerar uma exceção.

Criado 24 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 4
Participantes 4