Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 5 da Aula 2 - Mapeando relacionamentos Muitos-para-Muitos

Pessoal,

Ao invés de utilizar @JoinColumn, não bastaria apenas utlizar @Column( name= Nome_Da_Tabela_NO_Banco) ?

1 resposta
solução!

Oi Thiago, tudo bem?

Lembra que no relacionamento Many-to-many, a JPA vai criar uma tabela pra mapear os ids de ambas entidades? Então por isso, não podemos usar @JoinColumn, ok? Nesse caso, o certo seria utilizar o @JoinTable.

Agora, pegando o gancho da sua pergunta, por que será que não podemos utilizar @Table em vez de @JoinTable? Vamos investigar na documentação:

@Table:

Specifies the primary table for the annotated entity...
http://docs.oracle.com/javaee/6/api/javax/persistence/Table.html

@JoinTable:

Used in the mapping of associations...
http://docs.oracle.com/javaee/6/api/javax/persistence/JoinTable.html

Quando a JPA cria as tabelas para nossas entidades, ela usa o nome da classe para criar as tabelas. Se quisermos um nome diferente, precisamos usar a anotação @Table.

Por outro lado se o mapeamento for de um relacionamento (uma associação), ele cria a tabela de relacionamento usando o nome das duas entidades envolvidas. Para trocar esse nome, usamos a anotação @JoinTable.

Abraços!