アプリケーションで Hibernate と Jasper Report を使用しています。jasper レポートに結果を表示するために、パラメーターとして HQL クエリを渡しています。クエリでは、「union all」句を使用しています
以下のように
BED_ID として a.bedId、FROM_DATE として a.date、TO_DATE として b.transferDate、a として HmsIpdGeneral
から BED_CHARGE として a.bedCharge、b として HmsIpdTransferDetail を選択します。 .bedId = b.fromBedNo
ユニオンオール
BED_ID として c.bedId、FROM_DATE として c.date、TO_DATE として d.dateDischarge、c として HmsIpdGeneral から BED_CHARGE として c.bedCharge、d として HmsDischargeDetail を選択します。 .bedId = d.bedId
上記のクエリでは、サブクエリを作成して目的の出力を実現することにより、HmsIpdGeneral、HmsIpdTransferDetail、HmsDischargeDetail の 3 つの POJO ファイルからいくつかの値を収集しています。
これは、最初の部分のサブクエリのみの結果を示しています(「union all」句の前に書かれています)。
上記のように、サブクエリから値を取得するために「union all」句を使用せずに HQL クエリを作成するにはどうすればよいですか。HQL クエリの「union all」句を置き換える方法はありますか。
Jasper Report に結果を表示する HQL クエリでは「union all」が機能しないため、「union all」句を使用せずに 2 つのサブクエリの結果を結合する必要があります。
2 つのサブクエリの結果を結合するために適用できる "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 Table Structure // 別の 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 Table Structure // 患者の退院情報を保持し、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 || TO_DATE || BED_CHARGE
上記の結果を取得するために、クエリについて言及しました。目的の出力を取得するための他の方法は何ですか。
すべての貴重な提案に感謝します。