Beispiel für verschachtelte pureQueryBeans

Verschachtelte pureQuery-Beans funktionieren mit SQL-Anweisungen, die Joinvergleichselemente enthalten. Die Hierarchie der Beans wird durch pureQuery-Annotationen definiert, die für Bean-Eigenschaften definiert sind.

In diesem Beispiel gibt die SQL-Abfrage Abteilungs- und Mitarbeiterinformationen aus der DB2-Datenbank GSDB zurück. Das Beispiel erstellt verschachtelte pureQuery-Beans, um Mitarbeiterinformationen abteilungsweise zu organisieren. Die Bean der höchsten Ebene ist die Abteilungsbean Dept, die eine Liste von Emp-Beans enthält.

Die Informationen stammen aus den Tabellen EMPLOYEE, EMPLOYEE_HISTORY und ORGANIZATION des Schemas GOSALESHR. Die Abfrage gibt die folgenden Informationen aus den Tabellen zurück:
  • Die Mitarbeiter-ID, den Vornamen und den Nachnamen aus der Tabelle EMPLOYEE.
  • Die aktuelle Abteilungs-ID für den Mitarbeiter aus der Tabelle EMPLOYEE_HISTORY.
  • Die Abteilungs-ID und den Namen der ORGANIZATION-Tabelle der Abteilung.

Die Klasse Dept1, die mit der Beispielschnittstellenklasse verwendet wird, enthält Daten aus der Tabelle ORGANIZATION.

Die Klasse Dept2, die mit der Inline-SQL-Beispielabfrage verwendet wird, enthält Daten aus der Tabelle ORGANIZATION.

Die Klasse Emp ruft Daten aus den Tabellen EMPLOYEE und EMPLOYEE_HISTORY ab. Die Klasse Emp definiert die Bean Emp, eine untergeordnete Bean der Beans Dept1 und Dept2.

SQL-Beispielabfrage

Die SQL-Abfrage gibt Mitarbeiter- und Abteilungsinformationen zu jedem Mitarbeiter zurück.
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;
Die Tabelle EMPLOYEE_HISTORY kann für einen Mitarbeiter mehrere Einträge enthalten. Die aktuellen Mitarbeiterinformationen haben kein Enddatum. Das Vergleichselement AND EH.RECORD_END_DATE IS NULL schränkt die Abfrage so ein, dass nur das aktuelle Mitarbeiterprotokoll zurückgegeben wird.

Informationen zur Datenbank GSDB und den in diesem Beispiel verwendeten Tabellen finden Sie in Tabellen, auf die das Beispiel verschachtelter pureQuery-Beans zugreift.


Feedback