pureQuery のネストされた Bean の例

pureQuery のネストされた Bean は、結合述部が含まれている SQL ステートメントと連動します。 Bean の階層は、Bean プロパティーで定義する pureQuery のアノテーションによって定義します。

この例では、DB2® データベース GSDB から部門と従業員の情報を返す SQL 照会を取り上げます。 さらに、従業員の情報を部門ごとに編成するために、pureQuery のネストされた Bean を作成します。 最上位の Bean は、Emp Bean のリストを格納する Dept Bean です。

GOSALESHR スキーマの EMPLOYEE 表、EMPLOYEE_HISTORY 表、ORGANIZATION 表から情報を取り込みます。 照会がそれぞれの表から返す情報は、以下のとおりです。
  • 従業員 ID、名、姓 (EMPLOYEE 表)。
  • 従業員の現在の部門 ID (EMPLOYEE_HISTORY 表)。
  • 部門 ID と部門の名前 (ORGANIZATION 表)。

この例のインターフェース・クラスで使用する Dept1 クラスには、ORGANIZATION 表からのデータが入ります。

この例のインライン SQL 照会で使用する Dept2 クラスには、ORGANIZATION 表からのデータが入ります。

Emp クラスでは、EMPLOYEE 表と EMPLOYEE_HISTORY 表からデータを取り出します。 Emp クラスで定義する Emp Bean は、Dept1 Bean と Dept2 Bean の子 Bean になります。

サンプル SQL 照会

各従業員の従業員情報と部門情報を返す SQL 照会は、以下のとおりです。
SELECT E.EMPLOYEE_CODE, E.FIRST_NAME, E.LAST_NAME, E.DATE_HIRED,
     ORG.ORGANIZATION_CODE, ORG.ORGANIZATION_NAME_EN
  FROM EMPLOYEE AS E, EMPLOYEE_HISTORY AS EH, ORGANIZATION AS ORG
  WHERE EH.EMPLOYEE_CODE = E.EMPLOYEE_CODE 
      AND EH.ORGANIZATION_CODE = ORG.ORGANIZATION_CODE
      AND EH.RECORD_END_DATE IS NULL
  ORDER BY ORGANIZATION_CODE, E.LAST_NAME;
EMPLOYEE_HISTORY 表には、1 人の従業員のレコードが複数入っている場合もあります。 現在の従業員情報には終了日付がありません。 AND EH.RECORD_END_DATE IS NULL という述部で照会に制限をかければ、現在の従業員の履歴だけを返すことができます。

この例で使用している GSDB データベースとそれぞれの表については、pureQuery のネストされた Bean のサンプルでアクセスする表を参照してください。


フィードバック