Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hibernate不生成具有特定列的insert语句_Hibernate_Spring Boot_Spring Data Jpa_H2_Hibernate 5.x - Fatal编程技术网

hibernate不生成具有特定列的insert语句

hibernate不生成具有特定列的insert语句,hibernate,spring-boot,spring-data-jpa,h2,hibernate-5.x,Hibernate,Spring Boot,Spring Data Jpa,H2,Hibernate 5.x,我有3个实体相互作用,如下所述 Entity_A { @Id private String id; @OneToMany(cascade=CascadeType.ALL, mappedBy="a", orphanRemoval=true) private List<Entity_B> b; @OneToMany(cascadeType.ALL, mappedBy="a", orphanRemoval=true) private List<

我有3个实体相互作用,如下所述

Entity_A {
   @Id
   private String id;

   @OneToMany(cascade=CascadeType.ALL, mappedBy="a", orphanRemoval=true)
   private List<Entity_B> b;

   @OneToMany(cascadeType.ALL, mappedBy="a", orphanRemoval=true)
   private List<EntityRelationship_A_B> relationship;
}

@Embeddable
EntityRelationship_A_B_Id {
     @Column(name="a_id")
     private String a_id;

     @Column(name="b_id")
     private String b_id;

     @Column(name="relationship_id")
     private String relationship_id;
}

EntityRelationship_A_B {
   @EmbeddedId
   private EntityRelationship_A_B_Id id;

   @ManyToOne
   @JoinColumn(name="a_id", referencedColumn="a_id", insertable=false, updateable=false)
   private Entity_A a;

   @OneToOne(cascade = CascadeType.ALL, mappedBy="relationship", orphanremoval = true)
   private Entity_B b;
}

@Embeddable
Entity_B_Id {
   @Column(name="a_id")
   private String a_id;

   @Column(name="b_id")
   private String b_id;

   //std methods    
}

Entity_B {
    @EmbeddedId
    private Entity_B_Id id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "a_id", referencedColumn = "a_id", insertable = false, updateable = false)
    private Entity_A a;

    @OneToOne(fetch = fetchType.LAZY)
    @JoinColumn(name = "a_id", referencedColumn="a_id", insertable=false, updateable=false)
    @JoinColumn(name="b_id", referencedColumn="b_id", insertable=false, updateable=false)
    @JoinColumn(name="relationship_id", referencedColumn="relationship_id", insetable=false, updateable=false)
    private EntityRelationship_A_B relationship;

    // ....
}

ServiceImpl {
   save (...) {
        Manually populate and set Entity_B_Id into individual instance_A.instance_B
        Manually populate and set EntityRelationship_A_B_Id into individual instance_A.instance_A_B
        //...finally save the top level entity...
   }
}
实体{
@身份证
私有字符串id;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“a”,orphan=true)
私人名单b;
@OneToMany(cascadeType.ALL,mappedBy=“a”,orphan=true)
私有列表关系;
}
@可嵌入
实体关系{
@列(name=“a_id”)
私有字符串a_id;
@列(name=“b_id”)
私有字符串b_id;
@列(name=“relationship\u id”)
私有字符串关系\u id;
}
实体关系{
@嵌入ID
私人实体关系标识;
@许多酮
@JoinColumn(name=“a\u id”,referencedColumn=“a\u id”,insertable=false,updateable=false)
私人实体;
@OneTONE(cascade=CascadeType.ALL,mappedBy=“relationship”,orphan=true)
私人实体;
}
@可嵌入
实体标识{
@列(name=“a_id”)
私有字符串a_id;
@列(name=“b_id”)
私有字符串b_id;
//标准方法
}
实体{
@嵌入ID
私人实体Id;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“a\u id”,referencedColumn=“a\u id”,insertable=false,updateable=false)
私人实体;
@OneToOne(fetch=fetchType.LAZY)
@JoinColumn(name=“a\u id”,referencedColumn=“a\u id”,insertable=false,updateable=false)
@JoinColumn(name=“b\u id”,referencedColumn=“b\u id”,insertable=false,updateable=false)
@JoinColumn(name=“relationship\u id”,referencedColumn=“relationship\u id”,insetable=false,updateable=false)
私人实体关系;
// ....
}
ServiceImpl{
保存(…){
手动填充实体_B_Id并将其设置为单个实例_A.instance_B
手动填充EntityRelationship_A_B_Id并将其设置到单个实例中
//…最后保存顶级实体。。。
}
}
由于数据的性质,同一实例
实体B
不能既与
实体A
相关,也与
实体B
相关

通过为拥有方实现双向引用,我可以看到
EntityRelationship\u A\u B
A\u id、B\u id、relationship\u id
保存适当的值

但是
实体B
对于
关系id
总是以
null
存储;事实上,
Entity\u B
的insert语句根本不包含
relationship\u id
列。但是,通过查看运行时值,我可以保证
EntityRelationship\u A\u B
引用已正确设置
EntityRelationship\u A\u B.Entity\u B


我做错了什么?

您使用的是insertable=false,这意味着hibernate将忽略insert语句中的那些属性Show我可以在Entity_B表中填充relationship_id吗?在'id'属性(private Entity_B_id)中设置'a_id'值,因为该实体映射了'a_id',这将在insert/update语句中使用