Consulta JPA ManyToMany

3 respostas
H

Tenho dois pojos que criam um relacionamento ManyToMany (Muitos para Muitos) utilizando annotations (anotações), ou seja, eu não possuo o terceiro pojo que representaria a tabela do relacionamento , mas
possuo a tabela do banco de dados.

Até aqui normal. Mas como eu faço para efetuar a consulta nesta tabela.

Exemplo:

Aluno -----> TelefoneAluno <----- Telefone

Eu pretendo obter uma lista de telefones deste determinado aluno. Sem se utilizar de NativeQuery.

Obrigado pela ajuda.

3 Respostas

_fs

Se você mapeou corretamente bastaria fazer:

Aluno aluno = ( Aluno ) session.get( Aluno.class, 1L );
List< Telefone > telefones = aluno.getTelefones();

Mas me diga, porque este relacionamento é many-to-many e não one-to-many?

H

Este é apenas um exemplo que eu passei, que poderia representar o que estou enfrentado aqui na empresa. mesmo assim obrigado pela ajuda , eu consegui resolver ontem de outra forma.

Eu fiz uma consulta utilizando JPQL , embora a mnaneira que você demonstrou com certeza teria sido, bem mais fácil, e a maneira correta para se resolver este problema.

A maneira que eu resolvi foi essa: from Aluno as a where a.getTelefones().idAluno = codigo

Obrigado pela ajuda.

P

Olá pessoal :slight_smile:

Estou enfrentando um problema em buscar valores de um relacionamento manytomany. Na verdade consigo obter os dados que preciso, porém se adiciono um novo item na tabela e faço a busca de novamente usando listarMsg = usuario.getMensagensRecebidas(); ele me traz os valores antigos.

Alguém sabe como posso pra pegar os valores atualizados? Forçar uma busca no banco sempre que eu chamar o getMensagensRecebidas(); ?

Minha entidade esta marcada desse jeito

Usuario.java

@OneToMany(fetch = FetchType.EAGER, mappedBy = remetente)

private List mensagensEnviadas;

@OneToMany(fetch = FetchType.EAGER, mappedBy = destinatario)

private List mensagensRecebidas;

Agradeço!

Criado 24 de setembro de 2007
Ultima resposta 24 de jun. de 2011
Respostas 3
Participantes 3