У меня есть 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, но, похоже, ничего не работает.
Любая помощь будет оценена.