Parametros posicionais JPA, colunas e tabela

Java

17/09/2010

Bom dia a todos,   É possível passa a tabela e a coluna como parâmetros em consultas, conforme o exemplo abaixo  
select max(cn.?2) from ?1 cn
  Assiti a vídeo aula (construindo aplicação de notas fiscais usando struts2), onde o autor usava este código, tentei usa-lo e não deu certo, pesquise na net e me informaram não ser possível passar a coluna e a tabela como parametros. Mas no exemplo do autor do video funcionou e ai?
Alex Braga

Alex Braga

Curtidas 0

Respostas

Davi Costa

Davi Costa

17/09/2010

Cara se vc tiver usando JPA(Hibernate),
pesquisa pelas funcionalidades do Criteria,
lá tem uma restrição que é o Restrictions.in
que recebi sim uma lista como parâmetro.
Não é difícil de usar não:

Criteria c = session.createCriteria(SuaClasse.class);
c.add(Restrictions.in("suaColuna", new ArrayList<ClassePassadaPorParametro>));

Espero ter ajudado

Att Davi
GOSTEI 0
Alex Braga

Alex Braga

17/09/2010

Valeu Davi,   Mas estou usando JPA, O que me entriga é que na vídeo aula que eu assisti o autor : Diego Souza, faz da maneira que eu descrevi, e funfa. Na ocasião ele faz um método criador de queries.   Será que esta caracteristicas é referente a descrição do JPA 1 e foi retirada do JPA 2 por motivo de segurança.
GOSTEI 0
Davi Costa

Davi Costa

17/09/2010

Blza cara,
ele sempre costuma dar uma força por aqui também.
Espera que logo ele te responde.
E no mais se tiver usando JPA2.0 ele também
cria os Criterias dele. Possivelmente ele deve ter algo parecido com que mostrei antes do hibernate.
E só a nível de conhecimento nada impede de vc usar o hibernate não, se já não tiver é só adicionar as libs.
E não precisa configurar nada em xml. Daí usa a Session do Hibernate.

Att Davi
GOSTEI 0
Dyego Carmo

Dyego Carmo

17/09/2010

Opa , conseguiu resolver ?
GOSTEI 0
Alex Braga

Alex Braga

17/09/2010

Blz, Diego.   Bom primeiramente queria te parabenizar pelo excelente curso, muito bom mesmo. Quanto aos parametros, eu resolvi usando uma forma bem feia (abaixo), para dar continuidade ao Curso  
select max(cn."+column+") from "+className+" cn "
  Como pode ver, usei Strings no lugar dos parâmetros, o que não é recomendável por questões de segurança.   Mas a dúvida quanto a passar nome de tabelas e colunas com parâmetros em JPA ainda permanece, conforme vc usou no seu curso aula 5 (código a seguir), vi e revi os vídeos varias vezes, pesquisei na net (falam não ser possível) em livros não vi nada relacionado ao assunto, apenas passam parâmetros como valores para comparar ou realizar uma lógica.  
select max(cn.?1) from ?2 cn
     Bom aguardo retorno.   Valeu.
GOSTEI 0
Dyego Carmo

Dyego Carmo

17/09/2010

Bom , a String é insegura caso venha digita da WEB... se for dentor do seu problema não tem problema...

Quanto ao JPA , voce está usando o 1.0 ou 2.0 ?

GOSTEI 0
Alex Braga

Alex Braga

17/09/2010

Estou usando JPA 1.0
GOSTEI 0
Dyego Carmo

Dyego Carmo

17/09/2010

Deu certo agora ?

GOSTEI 0
POSTAR