CreateQuery com claúsula IN

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.

[code]
List colPalavraChave = new ArrayList();

List colPalavras = new ArrayList();
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();[/code]

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.

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.