Relacionamento Muitos para Muitos com Hibernate

1 resposta
java
maicondlp

Ola galera,

Estou com uma dúvida.

Tenho um relacionamento muitos para muitos com as classes Equipamento e Local.
Sei que o @ManyToMany deve ser evitado.
Nesses tipo de relacionamento lembro que o meu professor falava para criar uma outra classe tipo: EquipamentoLocal e usar a anotação nas demais apontando para ela.
Mas não lembro se era a anotação @OneToMany ou se era @ManyToOne.

Outra coisa que sempre quis saber é como mapear chave composta com hibernate?
Tipo queria que nessa tabela EquipamentoLocal a chave primária composta fosse a juncao da chave estrangeira de equipamento e a chave estrangeira de local.

Poderiam me ajudar?

1 Resposta

D

A maneira mais simples é utilizando o @ManyToMany está pronto pra usar.

Se seu banco de dados for gerado pela JPA. Utilize a forma mais simples.

Na classe Local.

@ManyToMany
List<Equipamento> equipamentos;

Ou na classe Equipamento

@ManyToMany
List<Local> locais;

Se o banco já existir, utilize @JoinTable para mapear a tabela e as colunais que vc precisa.

E sim você pode criar uma classe para representar a tabela intermediaria, mas antes se pergunte se ela faz algum sentido no seu negócio. Por exemplo, é necessário mais informações além dos IDs do equipamento e local?

Nessa classe intermediaria, vc precisa mapear o Equipamento e o Local com @ManyToOne e no Local ou Equipamento um @OneToMany para a classe intermediária.

Outro ponto, você precisa mesmo de chave composta? Pergunto, porque é um saco trabalhar com chave composta no Hibernate.

Porque @ManyToMany deve ser evitado?

Criado 9 de maio de 2017
Ultima resposta 9 de mai. de 2017
Respostas 1
Participantes 2