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.