我在JPQL语言中查询了5个表,但如果其中一个表为NULL,则整个查询将失败,resultList为空,并抛出异常。另一方面,如果不是所有的表都包含null,它就会按预期工作。
如何实现返回所有table不为null的对象和null为null的对象?所以我会得到- Object1[],null,例如...不仅结果列表是空的。非常感谢:)
public List<Object[]> getAdditionalInformation(String ppin) {
Query query = em.createQuery("SELECT p, pl, r, d, do FROM Patient p JOIN p.placements pl JOIN pl.room r"
+ " JOIN r.department d JOIN d.doctors do where p.pin = :ppin");
query.setParameter("ppin", ppin);
return query.getResultList();
}
@Transactional
public AdditionalPD getAdditional(String ppin) {
List<Object[]> list = hr.getAdditionalInformation(ppin);
AdditionalPD adp = new AdditionalPD();
Patient patient = null;
Placement placement = null;
Room room = null;
Department department = null;
Doctor doctor = null;
for(Object[] object : list) {
patient = (Patient) object[0];
placement = (Placement) object[1];
room = (Room) object[2];
department = (Department) object[3];
doctor = (Doctor) object[4];
}
adp.setPatientFirstName(patient.getFirstName());
adp.setPatientLastName(patient.getLastName());
adp.setAge(countAge(ppin));
adp.setFrom(placement.getFrom());
adp.setTo(placement.getTo());
adp.setRoomName(room.getName());
adp.setDepartmentName(department.getName());
adp.setDoctorFirstName(doctor.getFirstName());
adp.setDoctorLastName(doctor.getLastName());
return adp;
}
@GetMapping("/additional/pin/{ppin}")
public String additionalInformation(@PathVariable String ppin, Model model) {
AdditionalPD adp = has.getAdditional(ppin);
model.addAttribute("adp", adp);
return "additional";
}发布于 2018-05-01 04:31:59
使用LEFT JOIN而不是JOIN。缺省情况下,JPQL join是INNER JOINs。
https://stackoverflow.com/questions/50106474
复制相似问题