Eu tenho uma classe Pessoa que possui uma lista de Grupos em um relacionamento ManyToMany, existe uma forma elegante de consultar por exemplo: retorna todas as Pessoas que possuem um determinado Grupo?
Estou tentando realizar uma consulta deste tipo, mas não consegui fazer de uma forma elegante utilizando Hibernate.
Já tentei desta forma:
Queryquery=manager.createQuery("select f from Pessoa as f where f.grupo in (:grupo)");query.setParameter("grupo",grupo);returnquery.getResultList();
Mas, apresenta esse erro: could not resolve property: grupo of: br.com.ludium.modelo.Pessoa
Query query = manager.createQuery(“select p from Pessoa p inner join p.listaDeGrupos grupo where grupo in (:grupo)”); query.setParameter(“grupo”, grupo);
Query query = manager.createQuery(“select p from Pessoa p where p.listaDeGrupos in (:grupo)”); query.setParameter(“grupo”, grupo);
Soh uma dica: ao utilizar o inner join não eh necessário essa cláusula
"where grupo IN (:grupo)"; query.setParameter("grupo", grupo);
O inner join já vai trazer apenas pessoas que estejam associadas a uma lista de grupos.
Já a segunda query como não tem inner join precisa do where IN
Abs
C
CaitanoDiniz
Boa dica!
Mas eu estou retornando todas as pessoas que possuam um determinado grupo.
Algo como… um método que recebe um grupo e retorna todas as pessoas que possuem aquele grupo.
Um duvida que tenho é como o hibernate vai tratar esse inner join… hibernate irá unir completamente a tabela de Pessoa com a de Grupo e depois irá filtrar o Grupo?
Ou vai unir somente no caso de atender ao critério grupo?