Setando Valores com JPA e Query Dinâmica

1 resposta
R

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

1 Resposta

renanreismartins

infelizmente com jpa 1.0 são necessárias concatenações de string e outras gambiarras hahahaha nao tem como fugir!!!

agora com jpa 2 da pra usar criteria por exemplo

abrassss

Criado 7 de fevereiro de 2011
Ultima resposta 7 de fev. de 2011
Respostas 1
Participantes 2