@JoinColumn
可以在关系的两边使用。现在的问题是关于使用
@JoinColumn上
@OneToMany侧(极少数情况下)。这里的重点是 物理信息重复
(列名)以及 未优化的SQL查询,这会产生一些其他
UPDATE语句。
根据文件:
由于 多对一的 (几乎)总是 所有者侧 的在JPA规范的双向关系中,一对多关联是通过注解
@oneToMany(mappedBy=...)
@Entitypublic class Troop { @oneToMany(mappedBy="troop") public Set<Soldier> getSoldiers() { ...}@Entitypublic class Soldier { @ManyToOne @JoinColumn(name="troop_fk") public Troop getTroop() { ...}Troop``Soldier通过troop属性具有双向的一对多关系。您不必(不必)在
mappedBy侧面定义任何物理映射。
要 以一对多方为拥有方 映射双向一对多,您必须删除
mappedBy元素并将多对数设置
@JoinColumn为as
insertable和
updatablefalse。此解决方案未经过优化,将产生一些其他
UPDATE语句。
@Entitypublic class Troop { @oneToMany @JoinColumn(name="troop_fk") //we need to duplicate the physical information public Set<Soldier> getSoldiers() { ...}@Entitypublic class Soldier { @ManyToOne @JoinColumn(name="troop_fk", insertable=false, updatable=false) public Troop getTroop() { ...}


