有什么区别:
@Entity
public class Company {
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
private List<Branch> branches;
...
}
和
@Entity
public class Company {
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY,
mappedBy = "companyIdRef")
private List<Branch> branches;
...
}
最佳答案
注解@JoinColumn
表示该实体是关系的所有者(即:对应的表有一列带有被引用表的外键) ,而属性 mappedBy
表示这一方的实体是关系的反面,所有者位于“另一方”实体中。这也意味着您可以从用“mappedBy”(完全双向关系)注释的类访问另一个表。
特别是,对于问题中的代码,正确的注释如下所示:
@Entity
public class Company {
@OneToMany(mappedBy = "company",
orphanRemoval = true,
fetch = FetchType.LAZY,
cascade = CascadeType.ALL)
private List<Branch> branches;
}
@Entity
public class Branch {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "companyId")
private Company company;
}
关于java - JPA JoinColumn 与mappedBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953800/