CreateQuery com claúsula IN

1 resposta
R

Pessoal,

eu não estou conseguindo ver o erro no código abaixo.
Ao executar está me retornando ERRO: java.util.ArrayList cannot be cast to java.lang.String
Percebi que o problema está no IN, pois se retirar, funciona normal.

List<PalavraChave> colPalavraChave = new ArrayList<PalavraChave>();
			
List<String> colPalavras = new ArrayList<String>(); 
colPalavras.add("itens");
		
this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
			
Query query = sessao.createQuery("from PalavraChave WHERE palavraChave IN(:colPalavrasPesquisa) AND conhecimento IS NOT NULL group by conhecimento order by pctRelevancia desc");
query.setParameter("colPalavrasPesquisa", colPalavras);		
colPalavraChave = query.list();
			
this.transacao.commit();

Percebi também que se colocar fixo IN ('itens'), sem usar ArrayList funciona.
Mas não consigo entender, deveria funcionar com ArrayList.

Se poderem me ajudar...

Obrigado.

1 Resposta

drsmachado

E este cast implícito aqui?

query.setParameter("colPalavrasPesquisa", colPalavras);

Sendo que

List<String> colPalavras = new ArrayList<String>();

Você está convertendo, implicitamente, um ArrayList em uma String.
Ou você faz o cast explícito e indica a posição que deseja ou retira a String que será passada antes de chegar aqui.

Criado 17 de maio de 2011
Ultima resposta 18 de mai. de 2011
Respostas 1
Participantes 2