【发布时间】:2019-11-14 17:58:25
【问题描述】:
我对休眠中的@JoinColumn 和mappedBy 有疑问,在我阅读了stackoverflow 和其他博客中的这么多帖子之后,我仍然感到困惑。
以这个为例,每个员工都有很多电子邮件,一个员工可以拥有很多电子邮件:
第一个声明: 电子邮件是拥有方,因为它具有 Employee 表的外键,通常在关系中,“ “多”方是拥有方。
在hibernate中,对于双向关系:
员工
@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
}
电子邮件
@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 在拥有方。
我一头雾水,哪个合适?
【问题讨论】:
标签: database hibernate spring-boot jpa orm