Por que o mappedBy só foi usado na classe Serie e não na classe Episodios ?
Por que o mappedBy só foi usado na classe Serie e não na classe Episodios ?
Olá, Victor. Tudo bem?
A razão pela qual o mappedBy
é utilizado apenas na classe Serie
e não na classe Episodio
está relacionada à forma como o relacionamento bidirecional entre as duas classes é mapeado em JPA.
No caso de um relacionamento @OneToMany
e @ManyToOne
, como é o caso entre Serie
e Episodio
, o mappedBy
é utilizado na classe que possui a coleção (no caso, Serie
) para indicar que o relacionamento é controlado pelo lado "muitos" (Episodio
). Isso significa que a classe Serie
não é responsável por manter a chave estrangeira no banco de dados; essa responsabilidade é da classe Episodio
.
Aqui está um exemplo prático:
Em Serie.java
, você tem:
@OneToMany(mappedBy = "serie")
private List<Episodio> episodios = new ArrayList<>();
O mappedBy = "serie"
indica que o atributo serie
em Episodio
é o responsável pelo relacionamento.
Em Episodio.java
, você tem:
@ManyToOne
private Serie serie;
Aqui, Episodio
possui a referência à Serie
, e é onde a chave estrangeira é realmente armazenada no banco de dados.
Portanto, o mappedBy
é usado para especificar o lado não proprietário do relacionamento, que é a coleção na classe Serie
, enquanto Episodio
é o lado proprietário que realmente mantém a referência à chave estrangeira.