Hibernate 一对多冬眠

Hibernate 一对多冬眠,hibernate,hibernate-onetomany,Hibernate,Hibernate Onetomany,根据hibernate文档: 要将双向一对多映射为一对多,并将一对多端作为拥有端,您必须删除mappedBy元素,并将many-To-one@JoinColumn设置为可插入且可更新为false。此解决方案未优化,将生成一些额外的UPDATE语句 @实体 公营部队{ @独身癖 @JoinColumn(name=“team_fk”)//我们需要复制物理信息 公共集gets(){ ... } @实体 公营士兵{ @许多酮 @JoinColumn(name=“team_fk”,insertab

根据hibernate文档:

要将双向一对多映射为一对多,并将一对多端作为拥有端,您必须删除mappedBy元素,并将many-To-one@JoinColumn设置为可插入且可更新为false。此解决方案未优化,将生成一些额外的UPDATE语句

@实体
公营部队{
@独身癖
@JoinColumn(name=“team_fk”)//我们需要复制物理信息
公共集gets(){
...  
}  
@实体
公营士兵{
@许多酮
@JoinColumn(name=“team_fk”,insertable=false,updateable=false)
公共团队getTroop(){
...  
}  
我的问题是:

  • 这种设置的优点是什么?为什么不创建多个单方作为拥有方
  • 为什么在此设置中需要这两个值:insertable=false,Updateable=false

  • 我认为您没有抓住文档中引用的要点。它并不建议您使用一方或另一方作为拥有方,只是描述如何设置特定的一方。谢谢。但我理解这一点。我的问题是,以这种方式设置而不是多对一设置的目的是什么
    @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() {  
        ...  
    }