Pesquisa de 4 campos com JPA

3 respostas
luuu

Tenho uma tabela de empregados e criei uma tela pra pesquisa, que podem ser escolhidos 4 filtros de pesquisa, e nenhum deles é obrigatorio.
Estou utilizando glassfish com jsf1.1 e JPA toplink

Gostaria de saber como posso montar essa query, antes com 3 campos eu fiz com if/else , cada uma mandando pra uma namedQuery diferente, mas creio que não é uma boa pratica.

Alguma sugestao?

3 Respostas

diguix

Ao invés de você usar o if/else para mandar para uma query diferente, você pode montar a query dinâmicamente:

...
String query = "SELECT object(c) FROM MeuEntity c WHERE 1=1")

...

if(getValor() != null){
  query += " AND c.valor = :valor"
}

...

if(getValor() != null){
  query.setParameter("valor", getValor());
}

algo + ou menos assim.
Faça o if para cada valor que você tiver, assim você conseguira usar a mesma query independente de vir um, todos ou nenhum valor preenchido;

Ab's[]

luuu

Deu certo, valeu :slight_smile: .

Só estou com um problema agora, porque na verdade estou buscando em uma tabela de conhecimentos, que possui uma coluna que seria o ID do empregado. E quando eu busco com todos os campos vazios, ele me trás tudo, ou seja, se o empregado possui mais de 1 conhecimento cadastrado, a busca me traz esse empregado varias vezes.

Tem como limitar a busca pra ela me trazer apenas uma vez esse empregado?

luuu

Consegui resolver o problema acima ja, troquei a classe que faz a pesquisa.

Valeu ate mais.

Criado 11 de agosto de 2008
Ultima resposta 11 de ago. de 2008
Respostas 3
Participantes 2