【问题标题】:Persist entity OneToMany Relationship持久化实体 OneToMany 关系
【发布时间】:2020-06-15 04:55:10
【问题描述】:

我想在数据库中持久化 2 个对象时遇到问题

在请求类中:

@OneToMany(cascade = CascadeType.PERSIST, mappedBy = "request") 私人清单文件;

在文档类中: @JoinColumn(referencedColumnName = "ID_REQUEST") @ManyToOne 请求请求

问题是,当我添加请求时,我发现 2 对象被持久化,但在表 Document lD_REQUEST 始终为空

提前谢谢你,对不起我的英语

【问题讨论】:

    标签: java jpa


    【解决方案1】:

    您需要在文档表中声明包含请求 Id 的列是什么:

    @JoinColumn(name = "PARENT_REQUEST")
    

    其中 PARENT_REQUEST 是 Document 表中列的名称

    【讨论】:

      【解决方案2】:

      在将新数据持久化到数据库中时,您可能已将文档添加到 Request 的列表中,但忘记将 Request 的对象设置为另一侧的所有文档。

      检查您是否做了这两件事(以下是示例):

      Request request = new Request();
      //initialization of request
      for (...) { //iterate over all document candidates
          Document document = new Document();
          //initialization of document
          document.setRequest(request); //check this!
          request.getDocuments().add(document);
      }
      

      此外,您似乎对 ID_REQUEST 列没有非空约束。添加这个,这样你以后就不会有这个带有可为空的ID_REQUEST 字段的损坏数据(在这种情况下会引发违反约束的异常)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多