我很难理解下面的documentation
有什么评论
我们需要复制物理
是什么意思?
使用insertable = false,updatable = false有什么意义?
拜托,你能帮忙吗?
将一对多映射为一对多的双向映射
拥有方面,您必须删除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() {
...
}
最佳答案
我们需要复制物理
这意味着Hibernate将链接到troop_fk
实体中的Soldier
列以与Troop
实体连接。并且我们必须写出连接Troop
和Soldier
的列的物理名称。
使用insertable = false,updatable = false有什么意义?
由于它是Troop
实体的外键,因此由于约束而无法编辑。首先创建Troop
,然后在此Soldier
中添加Troop
。
当拥有方是OneToMany
一方时,此示例有关OneToMany
映射,因此该一方拥有关系,我们假定此一方首先创建。您可以删除insertable=false, updatable=false
,但是如果您的数据库中有约束,并尝试使用新的Soldier
对象创建Troop
,则会出现约束违反错误,因为Troop
表中不存在此新的Troop
实体。