Não estoura excessão

4 respostas
A

Boa noite.
Eu estou com o seguinte problema. Estou fazendo uma consulta que retorna uma lista, porém não esta estourando a exceção quando não encontra a lista. Abaixo segue o código. Agradeço a todos que me derem uma força.

public List<PessoaFisica> pesquisarPessoaPorParametro(String parametro) throws EntityDomainNotFoundException {
		try {
			return getEntityManager()
					.createQuery("select a from PessoaFisica a where a.cpf = :parametro OR a.nome = :parametro", PessoaFisica.class)
					.setParameter("parametro",parametro)
					.getResultList();
		} catch (EntityNotFoundException e) {
			throw new EntityDomainNotFoundException();
		}
	}

4 Respostas

darklordkamui

cara… essa exceção que voce colocou não é para quando a consulta não encontra nada… e sim para quando a entidade não é mapeada adequadamente na jpa/hibernate… para subir uma exceção de que não encontrou nada ou vc cria uma exceção… ou retorna a lista vazia…

Hebert_Coelho

E de onde você tirou que essa exception ocorreria com o método getResultList? O.o

O método getSingleResult faz isso, mas o método que você utilizou não.

Você vai ter que fazer um IF e ver se a lista está vazia, estando jogue a expcetion.

A

Prezado darklordkamui.
Obrigado pela resposta.
Mas como eu poderei fazer para consulta retornar uma exception personalizada (criada). Eu criei uma exception conforme abaixo:

package br.com.arquimedes.business.exception;

public class EntityDomainNotFoundException extends Exception {

	private static final long serialVersionUID = 1L;

	public EntityDomainNotFoundException(String message, Throwable cause) {
		super(message, cause);
	}

	public EntityDomainNotFoundException(String message) {
		super(message);
	}

	public EntityDomainNotFoundException(Throwable cause) {
		super(cause);
	}

	public EntityDomainNotFoundException() {
		super("Entidade nao encontrada");
	}
}

Eu posso usar essa exception cirada no catch? para capturar e tratar quando não achar nada minha consulta?

darklordkamui

um exemplo...

public List<Foo> procuraTodos() throws Exception {
		Query query = getCurrentSession().createQuery("from Foo");
		ArrayList<Foo> lista = (ArrayList<Foo>) query.getResultList();
		if (lista.isEmpty()) {
			throw new MinhaException("Lista vazia");
		}
		return lista;

	}

seria mais ou menos desse modo que eu faria... pode ser que tenha alguma forma melhor de se fazer de maneira elegante... mas ai só pesquisando...

Criado 23 de dezembro de 2012
Ultima resposta 24 de dez. de 2012
Respostas 4
Participantes 3