Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Espelho, espelho meu...

O certo não seria utilizar mappedBy=escritor para a anotação @OneToMany ao invés de mappedBy=escritores?

Outras duvidas:

  1. A tabela de relacionamento quando utilizando anotação bidirecional é criada para a anotação @ManyToOne (Posts_Escritor) ou @OneToMany (Escritor_Posts)? Existe uma regra para isso?

  2. O mappedBy fica sempre do lado da anotação @OneToMany?

4 respostas

Oi Anderson, tudo bem?

Você está correto, o certo seria utilizar "escritor". Vou pedir para o pessoal revisar o exercício.

Abraço!

Oi Anderson,

tem toda razao, já corrigi o exercicio.

obrigado por relatar, Nico

Muito obrigado pelo feedback pessoal.

Mas e sobre a tabela de relacionamento e sobre onde usar o mappedBy?

solução!

Oi Anderson,

Uma tabela de relacionamento é só necessária para um relacionamento @*ToMany. No exemplo do exercicio, a tabela Escritor_Post foi criada por causa da anotação @OneToMany:

public class Escritor {

    @OneToMany
    private List<Post> posts;
}

O JPA entende que esse relacionamento é o "lado forte" e exige assim uma tabela de relacionamento. O exercício na verdade não define um relacionamento bidirecional (pois faltou o mappedBy). O JPA entende as duas anotações como relacionamentos distintos.

Quando usamos o mappedBy ai sim o JPA sabe que é um relacionamento bidirecional, sabe que já existe "um lado forte" que representa o relacionamento no banco de dados.

Por fim, o mappedBy deve ficar na anotação @OneToMany (ou no @ManyToMany no relacionamento muitos para muitos). A anotação @ManyToOne não possui um atributo chamada mappedBy.

nao sei se consegui responder a sua duvida ....

abs, Nico