Взаимосвязь OneToMany с 3 классами сущностей с использованием JPA и весенней загрузки - PullRequest
0 голосов
/ 08 марта 2019

У меня есть 3 класса, скажем, ClassA, ClassB и ClassC со следующим отображением.

  @Entity
  public class ClassA{

  private String firstname;
  private String lastname;

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long classAId;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "some_id")
    private List<ClassB> classB;

} 


 @Entity
 public class ClassB{

  private String XYZ;
  private String ABC;

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long classBId;

    @ManyToOne()
    @JoinColumn(name = "some_id")
    private ClassA classA;


    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "some_other_id")
    private List<ClassC> classC;

} 


@Entity
 public class ClassC{

  private String XYZA;
  private String ABCC;

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long classCId;

    @ManyToOne()
    @JoinColumn(name = "some_other_id")
    private ClassB classB;

} 

Итак, отношения между классами таковы: класс A имеет отношение один ко многим с классом B, а класс B имеет отношение один ко многим с классом C.

Я могу сохранить данные, используя это отображение. Данные сохраняются во всех 3 таблицах. Но при обновлении данных в третьей таблице (classC) some_other_id устанавливает значение null, а в другой таблице все в порядке. в классе B some_id обновляется правильно.

В UpdateController я сохраняю предыдущую запись, устанавливаю для нее все новые значения и использую метод .save () для ее обновления.

Я перепробовал все возможные решения, используя mappedBy, nullable = false, updatable = false, но, похоже, ничего не работает.

Любая помощь будет оценена.

...