Кажется, мне трудно понять JPA и как на самом деле работают отношения OneToMany.
Например, представьте, что у меня есть объект Class
@Entity
public class Class {
@Id
private String className;
@OneToMany(cascade = Cascade.ALL, orphanRemoval = true)
private Set<Student> students;
// Constructors, Getters, Setter
}
У меня также естьобъект Student
, где он содержит класс.
@Entity
public class Student {
@Id
private String studentName;
@ManyToOne
private Class class;
// Constructors, Getters, Setter
}
Очевидно, ученик может иметь несколько классов, но забывать об этом.
Почему, когда я строю класс, а затем собираю пару учеников, используя этот класс, findAll()
на ClassRepository
возвращает мне пустой набор учеников.
Class class = new Class("CS", new HashSet<>());
classRepository.save(class); // repository has no special functions
Student student1 = new Student("1", class);
Student student2 = new Student("2", class);
studentRepository.save(student1);
studentRepository.save(student2);
classRepository.findAll() // Returns me a List<Class> with only one class object that has an empty set.
IЯ думал, что приведенный выше код должен автоматически увидеть, что эти два ученика принадлежат к одному классу, и поэтому, когда я вызываю buildingRepository.findAll()
, он вернет объект Class
с заполненными наборами учеников.
Это мое пониманиенеправильно тогда?Или мой код неверен?И как я могу изменить это, чтобы исправить это?