私は3つのクラスを持っています:医者、患者と相談。 DoctorクラスとPatientクラスの両方にフィールドとしての相談のリストがあります。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;
//...
}
私は、単一のクエリから医者の患者を取得したいと思います。それは医者と同じ相談を受けているすべての患者です。医者と患者の間には接続がないことに注意してください。 これは可能ですか?
where entity in list<entity>
場合で
where list<entity> contains entity
とが存在することになるが、この場合にはそこになる場合
select p from Patient p where p.consultations **someKeyword** (select d.consultations from Doctor d where d.id = :doctorId)
私が間違ってsomeKeywordじゃない場合だろうがが含まれています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の初心者です。
私は回避策を見つけました。私はすべての相談を受けてから、各相談から患者を得ます。それでも、私は何が覚えているかのような何かが感知できるかどうかを知りたいと思います。 – m3th0dman