Hibernate + java.util.Set + Many-To-Many [RESOLVIDO]

3 respostas
ffontouras

Oi Pessoal!

Estou com uma dúvida muito simples, porem, não consegui ainda resolve-la. Preciso passar um parâmetro para uma consulta hibernate, contudo, quando passo com o HashSet já criado a seguinte exceção é apresentada:

Caused by: java.lang.IllegalArgumentException: Parameter value [Perfil[ ID=1 Nome=Administrador Permissao.size=1 Menu.size=2 Usuario.size=1 ]] was not matching type [java.util.Set]

Fragmento do código:

Perfil perfil = usuario.getPerfil();

Set<Perfil> p = new HashSet<Perfil>();
p.add(perfil);
			
QueryParam param = new QueryParam();
param.setParam("perfil", p);
			
System.out.println(">>" + menuDao.find("FROM Menu m WHERE m.perfil = :perfil", param));

Como faço para passar o Set, já não estou passando no argumento da consulta?

PS: A classe QueryParam é minha.

Abraços! e obrigado!

3 Respostas

Flavio_Almeida

Você quer listar todos os menus de um perfil, certo?
Como sua atributo perfil é uma lista de vários perfis, você pode mudar sua consulta para:

FROM Menu m WHERE :perfil MEMBER of m.perfil

obs: :perfil é o objeto perfil, e não a lista.

Isso aqui pode te ajudar:

http://www.datadisk.co.uk/html_docs/ejb/ejb3_querying.htm

Abraço

Flavio_Almeida

Ah, se você usa JPA, pode experimentar meu EntityConverter em
http://www.guj.com.br/posts/list/220692.java#1128828

Abraço

ffontouras

Oi Flavio!!!

Funcionou!!!

Obrigado!

PS: Sua classe é legal hein! Muito útil começarei a utiliza-la.

Abraços

Criado 9 de outubro de 2010
Ultima resposta 10 de out. de 2010
Respostas 3
Participantes 2