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();
}
}
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…
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.
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?
um exemplo…
[code]public List procuraTodos() throws Exception {
Query query = getCurrentSession().createQuery(“from Foo”);
ArrayList lista = (ArrayList) query.getResultList();
if (lista.isEmpty()) {
throw new MinhaException(“Lista vazia”);
}
return lista;
}[/code]
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…