我在我的应用程序中使用 Hibernate 和 Jasper Report。为了在碧玉报告中显示结果,我将 HQL 查询作为参数传递。在查询中我使用“union all”子句
如下
选择 a.bedId 作为 BED_ID,a.date 作为 FROM_DATE,b.transferDate 作为 TO_DATE,a.bedCharge 作为 BED_CHARGE
从 HmsIpdGeneral 作为 a,HmsIpdTransferDetail 作为 b 其中 a.mrNumber = b.mrNumber 和 a.ipdId = b.ipdId 和 a .bedId = b.fromBedNo
联合所有
选择 c.bedId 作为 BED_ID,c.date 作为 FROM_DATE,d.dateDischarge 作为 TO_DATE,c.bedCharge 作为 BED_CHARGE 从 HmsIpdGeneral 作为 c,HmsDischargeDetail 作为 d 其中 c.mrNumber = d.mrNumber 和 c.ipdId = d.patientId 和 c .bedId = d.bedId
在上面的查询中,我通过创建子查询来完成所需的输出,从 3 个 POJO 文件中收集一些值,这些文件是 HmsIpdGeneral、HmsIpdTransferDetail、HmsDischargeDetail。
这仅向我显示了第一部分子查询的结果(写在“union all”子句之前)。
如上所述,如何在不使用“union all”子句从子查询中获取值的情况下编写 HQL 查询。有什么方法可以替换 HQL 查询中的“union all”子句。
我需要的是在不使用“union all”子句的情况下组合两个子查询的结果,因为“union all”不适用于 HQL 查询以在 Jasper Report 中显示结果。
请向我建议“union all”子句的替代解决方案,该子句可用于组合来自两个子查询的结果。
===== 编辑 =======
在这里,我试图澄清我的情况。以下是我拥有的 3 个 pojo 文件结构。此应用程序适用于医院管理。我必须计算患者的 bed_charge 和详细信息,以显示他在哪张床上的哪一天到哪一天。如果患者入院,他的 BED_ID 将输入到 HmsIpdGeneral 表中,如果他转移到另一张床,那么值也会输入到 HmsIpdGeneral 表中。
HmsIpdTransferDetail 表保存有关转移患者和相应 BED_ID 的信息。
HmsDischargeDetail 表保存有关出院患者和相应空缺 BED_ID 的信息
我必须显示患者的详细信息,从哪个日期到哪个日期他在哪个 BED_ID 上,并且必须显示 BED_CHARGE。
这是 POJO 文件结构(为方便起见,我从结构中删除了无用的字段)
HmsIpdGeneral Table Structure // 保存 BED_ID 的信息,即在哪一天哪张床被分配给谁
private Integer id;
private String mrNumber;
private String ipdId;
private String bedId; // for BED_ID
private double bedCharge; // for BED_CHARGE
private Date date; // for FROM_DATE
HmsIpdTransferDetail 表结构 // 保存转移到另一个 BED_ID 的患者信息
private Integer transferId;
private String mrNumber;
private String ipdId;
private String fromWardCode;
private String toWardCode;
private String fromBedNo; // for BED_ID from where patient is transfered
private String toBedNo; // for NEW BED_ID where patient is transfered
private Date transferDate; // for TO_DATE
HmsDischargeDetail 表结构 // 保存患者出院信息,BED_ID 状态将变为空缺
private String mrNumber;
private String patientId; // ipdId will be inserted here
private String bedId; // for BED_ID where patient is last time shifted before discharge
private Date dateAdmission;
private Date dateDischarge; // for TO_DATE
特定 MrNumber 和 IpdId 的 Jasper 报告结构(使用查询执行)
床_ID || FROM_DATE || TO_DATE || BED_CHARGE
为了获得上述结果,我已经提到了我的查询。获得所需输出的另一种方法是什么。
我感谢所有宝贵的建议。