JPA ManyToMany and mappedBY



我完全理解@OneToMany, @ManyToOne和@ManyToMany。然而,mappedBy = "某些集合或类"被混淆了。

从我的理解来看,多的部分总是拥有的那一面。例如

 @Entity
 @Table(name = "company")
  public class CompanyEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idcompany")
    private Integer idcompany;
    @Basic(optional = false)
    @Column(name = "name")
    private String name;
    @Basic(optional = false)
    @Column(name = "address")
    private String address;
    @OneToMany
    private Collection<EmployeeEnity> employeeEnity 

这是说一个公司可以有很多员工。一个是公司,许多是员工。

但是对于@ manymany,我们仍然有一个逆边。这就是我不明白的地方。@ manymany只是表示中间有一个表,那么如何确定逆和所有者呢?

我知道mapdby是强制性的,但是选择把它放在哪里让我很困惑。

对于双向的onetmany,多侧必须是所有者侧。

对于多多,你有选择:你决定哪边是所有者边,哪边是逆边。

请注意,在您的示例中,要么关联是单向的,唯一的一面(一面)显然是所有者的一面,要么关联是双向的,映射是不正确的,因为一面必须是相反的一面,因此应该有一个mappedBy属性:

@OneToMany(mappedBy = "company")
private Collection<EmployeeEntity> employees;

最新更新