У меня есть вопрос относительно @JoinColumn
и mappedBy
в спящем режиме, после того, как я прочитал так много постов в stackoverflow и других блогах, я все еще путаюсь.
Возьмите это в качестве примера, у каждого сотрудника есть много электронных писем, и один сотрудник может владеть многими электронными письмами:
Первое утверждение: Электронная почта - это владеющая сторона , поскольку она имеет внешний ключ к таблице Employee, обычно в отношении, стороне "Many" владеющая сторона.
В спящем режиме для двунаправленных отношений:
Employee
@Entity
@Table(name = "employee")
public class Employee{
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "employee")
private List<Email> emails = new ArrayList<>();
//Constructors, getters and setters removed for brevity
}
E-mail
@Entity
@Table(name = "email")
public class Email{
@Id
@GeneratedValue
private Long id;
private String email;
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
//Constructors, getters and setters removed for brevity
}
Итак, из того, что я прочитал, обычно @JoinColumn
находится на стороне владельца, где mappedBy
на обратной стороне.
Но я также где-то читал, что @JoinColumn
на обратной стороне, а mappedBy
на стороне владельца.
Я в замешательстве, какой уместен?