根据休眠文档:
要将双向一对多映射,将一对多作为拥有方,您必须删除 mappedBy 元素并将多对一 @JoinColumn 设置为可插入且可更新为 false。此解决方案未优化,会产生一些额外的 UPDATE 语句。
@Entity
public class Troop {
@OneToMany
@JoinColumn(name="troop_fk") //we need to duplicate the physical information
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk", insertable=false, updatable=false)
public Troop getTroop() {
...
}
我的问题是:
- 这样的设置有什么好处。为什么不创建 Manytonone 方作为拥有方
- 为什么在这个设置中需要这两个值:insertable=false, updatable=false