[Resolvido] Duvida - Hql com mapeamento ManyToMany

Ola.

Meu problema é o seguinte: tenho uma classe q possui referencia para ela mesma:

@Entity
public class Usuario {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY) 
	@Column
	private int id;
	@Column(length=80)
	private String nome;
	@Column(length=20)
	private String login;
	@Column(length=20)
	private String senha;
	@ManyToMany(fetch=FetchType.EAGER,targetEntity=Usuario.class,cascade={CascadeType.ALL})
	private List<Usuario> contatos;
}

e preciso selecionar os usuarios q tem um usuario especifico como contato.
Explicando melhor: O hibernate mapeou e fez o banco certinho da maneira como ta acima, ele criou uma tabela USUARIO e uma USUARIO_USUARIO q possui o ID do usuario1 e o ID do usuario2, simulando os contatos. Se o usuario1 tem o usuario2 adicionado, entao na tabela vai ter o registro USUARIO_USUARIO(1, 2), nesse caso o usuario2 nao tem o usuario1 como contato, apenas o usuario1 possui o usuario2. Preciso uma hql q traga pra mim todos os Usuarios q possuem, por exemplo, o usuario2 adicionado, ali no exemplo o select me traria apenas o usuario1.

Ja tentei d varias formas: “from Usuario where :usuario = contatos”, “from Usuario where :usuario in contatos”, “from Usuario where :usuario.id = contatos.id”; mas nao consigo fazer funcionar.

Se eu fizer o select: “select contatos from Usuario” ele traz certinho os contatos desse usuario, mas nao consigo trazer os contatos q TEM esse usuario.

Se nao fui bem claro, peçam maiores explicaçoes.

Desde ja agradeco.

bom, ja que vc ker, fazer com Hibernate, talvez uma solução com criteria te sirva, então la vai…

[code]public List<Usuario> findUsersByContato(Usuario contato) {
DetachedCriteria dc = DetachedCriteria.forClass(Usuario.class)
.createCriteria(“contatos”) //sub-criteria para os contatos
.add(Restrictions.eq(“id”, contato.getId()); //onde o id do contato = contato.getId()

return dc
            .getExecutableCriteria(getSession()) //injetando a sessão do hiberante
            .list(); //fazendo a lista

}[/code]

realizando a busca, dos Usuarios, onde em seus contatos, existe um onde o ID bate com o ID enviado

Cara, valeu

era EXATAMENTE ISSO que eu queria! : :smiley:

mto obrigado.

[quote=NeRdE]Cara, valeu

era EXATAMENTE ISSO que eu queria! : :smiley:

mto obrigado.[/quote]

c precisar de restrições antes de restringir os contatos… por exemplo todos os usuarios maiores de 18, onde tenham o contato X … terá q por as restrições do Usuario (e não do contato) … antes do createCriteria(“contatos”)