Pessoal,
alguém poderia me ajudar com o seguinte problema, preciso criar uma pesquisa dinâmica usando JPA.
O problema é a setagem dos parametros.
Veja só, pensei em fazer as queries assim:
StringBuffer consulta = new StringBuffer();
consulta.append("SELECT RT FROM ResponsavelTecnicoED RT WHERE ");
if (responsavelTecnicoED.getPessoaFisicaED() != null &&
responsavelTecnicoED.getPessoaFisicaED().getTxtNome() != null) {
consulta.append("UPPER(RT.pessoaFisicaED.txtNome) like :txtNome ");
//Indica que Já Pode Colocar um AND na Frente da Consulta Dinamica
jaExisteUmaCondicao = true;
//Adiciona os Parametros da Query Aqui
parametrosEValores.add("txtNome");
parametrosEValores.add("%"+responsavelTecnicoED.getPessoaFisicaED().getTxtNome().toUpperCase()+"%");
}
if (responsavelTecnicoED.getPessoaFisicaED() != null &&
responsavelTecnicoED.getPessoaFisicaED().getNroCpf() != null) {
//Verifica a Existencia de um AND para Coloca-lo ou Não na Consulta
if (jaExisteUmaCondicao) consulta.append("AND RT.pessoaFisicaED.nroCpf = :nroCpf ");
else consulta.append("RT.pessoaFisicaED.nroCpf = :nroCpf ");
//Adiciona os Parametros da Query Aqui
parametrosEValores.add("nroCpf");
parametrosEValores.add(responsavelTecnicoED.getPessoaFisicaED().getNroCpf());
}
...
Ao final do processo eu preciso dar um
Query query = em.createQuery(consulta.toString());
for (Object o : parametrosEValores) {
if (i == 0)
query.setParameter(o.toString(), "%"+responsavelTecnicoED.getPessoaFisicaED().getTxtNome().toUpperCase()+"%");
...
Veja que eu tenho que percorrer um ArrayList para setar os parametros da query. Ou seja, ficou bem ruim, alguém tem uma solução melhor.
Desde já agradeço quem puder dar uma ajuda.
Att,
Regis