Родительский идентификатор не сохраняется в дочерней таблице Spring JPA2 @OneToMany отношение - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть json, как показано ниже, которое исходит от стороннего сервиса, который я получаю через открытый симулятор.Я пытаюсь сохранить эти данные в моей базе данных MySQL, используя Spring JPA2.

[
  {
    "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, как показано ниже blow

Requests.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
}

Groups.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 , как показано ниже.Моя таблица ожидаемых групп также показана ниже

enter image description here

Может кто-нибудь сказать мне, почему request_id не сохраняется.

1 Ответ

0 голосов
/ 14 февраля 2019

Попробуйте заменить это:

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

На это:

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