Olá pessoal,
estou tentando resolver uma bronca envolvendo mapeamento @ManyToMany e Criteria/HQL query. Tenho o relacionamento unidirecional Usuario x Perfil, onde usuário possui uma coleção (Set) de perfis.
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "usuario_perfil", 
				joinColumns = @JoinColumn(name = "id_usuario", referencedColumnName = "id"), 
											inverseJoinColumns = @JoinColumn(name = "id_perfil", referencedColumnName = "id"))
	public Set<Perfil> getPerfis() {
		return perfis;
	}
Ao tentar realizar a consulta de usuário, trazendo a coleção de perfis, o hibernate constrói um objeto do tipo Usuario para cada perfil que este possuir:
		Criteria c = sessionFactory.getCurrentSession().createCriteria(
				Usuario.class);
		c.setFetchMode("perfis", FetchMode.JOIN);
ou
		Query q = sessionFactory.getCurrentSession().createQuery(
				"from Usuario u join fetch u.perfis p");
A solução que encontrei foi a seguinte:
Gostaria de saber se este é o comportamento normal do hibernate, ou se algo está errado na configuração. Obrigado.