首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPQL - Joins - MultipleTables和空ResultList

JPQL - Joins - MultipleTables和空ResultList
EN

Stack Overflow用户
提问于 2018-05-01 02:50:00
回答 1查看 54关注 0票数 1

我在JPQL语言中查询了5个表,但如果其中一个表为NULL,则整个查询将失败,resultList为空,并抛出异常。另一方面,如果不是所有的表都包含null,它就会按预期工作。

如何实现返回所有table不为null的对象和null为null的对象?所以我会得到- Object1[],null,例如...不仅结果列表是空的。非常感谢:)

代码语言:javascript
复制
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";
    }
EN

回答 1

Stack Overflow用户

发布于 2018-05-01 04:31:59

使用LEFT JOIN而不是JOIN。缺省情况下,JPQL join是INNER JOINs。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50106474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档