0

我在我的应用程序中使用 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

为了获得上述结果,我已经提到了我的查询。获得所需输出的另一种方法是什么。

我感谢所有宝贵的建议。

4

0 回答 0