有什么区别:
@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;
...
}
原文由 Mike 发布,翻译遵循 CC BY-SA 4.0 许可协议
@JoinColumn
可以用在关系的两边。 问题是关于在@OneToMany
端使用@JoinColumn
--- (罕见情况)。这里的重点是 _物理信息重复_(列名)以及 _未优化的 SQL 查询,这将产生一些额外UPDATE
语句_。根据 文档:
由于 多对一(几乎)始终是 JPA 规范中双向关系的 所有者方,因此一对多关联由
@OneToMany(mappedBy=...)
注释Troop
Soldier
—具有双向一对多关系。您不必(不得)在mappedBy
端定义任何物理映射。要映射双向一对多,将 一对多方作为拥有方,您必须删除
mappedBy
元素并将多对一设置为@JoinColumn
作为insertable
和updatable
为假。此解决方案未优化,会产生一些额外UPDATE
语句。