簡體   English   中英

父 id 未保存在子表 Spring JPA2 @OneToMany 關系中

[英]Parent id is not saved in child table Spring JPA2 @OneToMany relation

我有如下所示的 json,它來自我通過 open feign 客戶端獲取的第三方服務。 我正在嘗試使用 Spring JPA2 將這些詳細信息保存到我的 MySQL 數據庫中。

[
  {
    "request_id": 111,
    "name": "ABC",
    "groups": [
      {
        "id": 21,
        "group": "grp_A"
      },
      {
        "id": 22,
        "group": "grp_B"
      }
    ]
  },
  {
    "request_id": 222,
    "name": "ABC",
    "groups": [
      {
        "id": 23,
        "group": "grp_C"
      }
    ]
  },
  {
    "request_id": 333,
    "name": "ABC",
    "groups": [
      {
        "id": 24,
        "group": "grp_A"
      }
    ]
  },
  {
    "request_id": 444,
    "name": "ABC",
    "groups": [
      {
        "id": 25,
        "group": "grp_C"
      }
    ]
  },
  {
    "request_id": 555,
    "name": "ABC",
    "groups": []
  }
]

我已經為上面的 json 編寫了映射,如圖所示

請求.java

@Entity
@Table(name = "requests")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Requests {

    @Id
    @Column(name = "request_id")
    private String id;

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

    @OneToMany(mappedBy = "id", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Set<Groups> groups = Sets.newHashSet();

    // getters and setters
}

組.java

@Entity
@Table(name = "groups")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Groups{

    @Id
    @Column(name = "id")
    private String id;

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

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "request_id")
    private Requests requests;

    // getters and setters
}

現在在我的服務類中我做了如下所示

List<Requests> allRequests = requestFeignClient.getRequests();
requestRepository.saveAll(allRequests);

request_id外,所有詳細信息都保存到數據庫中,如下所示。 我的預期組表也如下所示

在此處輸入圖片說明

誰能告訴我為什么request_id沒有被保存。

嘗試替換這個:

@OneToMany(mappedBy = "id", cascade = CascadeType.ALL, fetch = FetchType.LAZY)

有了這個:

@OneToMany(mappedBy = "requests", cascade = CascadeType.ALL, fetch = FetchType.LAZY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM