У меня есть три класса: доктор, пациент и консультации. В классах «Доктор» и «Пациент» есть список консультаций в качестве поля.Как написать запрос в JPQL?
@Entity
public class Consultation {
@Id
@GeneratedValue
private int id;
private Calendar scheduleDate;
private String information;
private String symptoms;
@ManyToOne
private Doctor doctor;
@ManyToOne
private Patient patient;
//...
}
@Entity
public class Patient {
@Id
@GeneratedValue
private int id;
private String name;
private String ssn;
private String address;
@OneToMany(mappedBy = "patient")
private List<Consultation> consultations;
//...
}
@Entity
public class Doctor {
@Id
@GeneratedValue
private int id;
private String name;
private String specialization;
@OneToMany(mappedBy = "doctor")
private List<Consultation> consultations;
//...
}
Я хочу получить пациентов врача из одного запроса; это все пациенты, которые имеют ту же консультацию, что и врач. Обратите внимание, что между Доктором и Пациентом нет связи. Возможно ли это?
select p from Patient p where p.consultations **someKeyword** (select d.consultations from Doctor d where d.id = :doctorId)
Если я не ошибаюсь someKeyword бы содержит если бы
where list<entity> contains entity
и в если
where entity in list<entity>
, но в этом случае будет be
list someKeyword list
Комбинация будет:
select p from Patient p where p.consultations contains (select c from Consultation c where c in (select d.consultations from Doctor d where d.id = :doctorId))
, но это делает Sens?
Я новичок в JPA и JPQL.
Я нашел работу вокруг; Я получаю все Консультации, а затем пациент от каждой консультации. Тем не менее, я хотел бы знать, возможно ли что-то вроде того, что делает abouve. – m3th0dman