У меня есть простое двунаправленное отображение один-ко-многим, и я хочу запросить не обязательную сторону отношений, а обратный конец. Моя задолженность выглядит следующим образом:
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "enrollment_id")
private String enrollmentId;
@Column(name = "name")
private String name;
@ManyToOne
@JoinColumn(name = "guide_id")
private Guide guide;
}
, а обратный конец выглядит следующим образом:
@Entity
public class Guide {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "salary")
private Long salary;
@Column(name = "staff_id")
private String staffId;
@OneToMany(mappedBy = "guide", cascade = CascadeType.PERSIST)
private Set<Student> students = new HashSet<>();
public void addStudent(Student student){
students.add(student);
student.setGuide(this);
}
public void removeStudent(Student student){
students.remove(student);
student.setGuide(null);
}
}
Я хочу запросить справочник без ученика, поэтому яиспользовал следующий именованный запрос:
@NamedQuery(name = Guide.GUIDE_WITH_NO_STUDENT_QUEY, query = "select g from Guide g where g.students is empty")
но я получил это исключение: вызвано: org.hibernate.LazyInitializationException: не удалось лениво инициализировать коллекцию ролей: entity.Guide.students, не удалось инициализировать прокси -нет сеанса
Я не понимаю, почему