[RESOLVIDO] Resultado de uma query não pode ser null?

5 respostas
P

Amigos,

tem algo que está me deixando louco…
Um resultado de uma query, não pode ser null???

estou tentando fazer isso:

public boolean verifica(String namedQuery, Map<String, Object> parametros) {
		boolean valido = false;
		try {
			Query query = em.createNamedQuery(namedQuery);
			if (parametros != null && !parametros.isEmpty()) {
				populaQueryParametros(query, parametros);
			}

			Consulta result = (Consulta) query.getSingleResult();
			if(result != null){
				valido = true;
			}
		} catch (Exception e) {
			System.out.println("Erro: " + e.getMessage());
			e.printStackTrace();
		}
		return valido;
	}

Quando encontra uma consulta, beleza… mas quando não encontra, em vez de retornar valido=false, ele cai na Exception:

javax.persistence.NoResultException: No entity found for query

Não sei mais o que fazer… alguém pode me dar uma luz??
Obrigadao!!!

5 Respostas

G

Quando vc faz o query.getSingleResult() e um cast do mesmo ele vem null e… null nao é um objeto e muito menos um objeto do tipo consulta.
Faz um query.getResultList() e verifica o size dele se maior que 0 o valido vai ser true;

[]`s

Hebert_Coelho

O método getSingleResult vai dar exception caso não encontre valores, ou caso encontre mais que um valor.
Esse é o comportamento dele.

Você pode fazer um try/catch e no catch retornar false.

Para mais detalhes, veja esse post: JPA Consultas e Dicas.

P

Obrigado pela ajuda amigos!!
Acabei resolvendo da maneira que o grinche comentou… ae verifiquei a lista isEmpty, e tudo ocorreu bem! :smiley:
testei também com o jeito que o Hebert citou, e também funcionou!

Obrigado pela ajuda!!!
Abraçaaao!!

Hebert_Coelho

pcsantana:
Obrigado pela ajuda amigos!!
Acabei resolvendo da maneira que o grinche comentou… ae verifiquei a lista isEmpty, e tudo ocorreu bem! :smiley:
testei também com o jeito que o Hebert citou, e também funcionou!

Obrigado pela ajuda!!!
Abraçaaao!!

Maravilha. Apenas tome cuidado com o que foi erroneamente dito aqui. O método getSingleResult não irá retornar null nunca para a versão 1.0 ou 2.0 do JPA.

P

Aham, pode deixar! vivendo e aprendendo (=
Obrigado mais uma vez,

Abraços

Criado 13 de outubro de 2012
Ultima resposta 16 de out. de 2012
Respostas 5
Participantes 3