Exemple de beans imbriqués pureQuery

Les beans imbriqués pureQuery fonctionnent avec des instructions SQL contenant les prédicats de jointure. La hiérarchie des beans est définie par les annotations pureQuery définies sur les propriétés de bean.

Dans cet exemple, la requête SQL renvoie les informations de département et d'employé depuis DB2 Database GSDB. L'exemple crée des beans imbriqués pureQuery pour organiser les informations sur les employés par département. Le bean de niveau supérieur est le bean Dept qui contient une liste des beans Emp.

Les informations proviennent des tables EMPLOYEE, EMPLOYEE_HISTORY et ORGANIZATION dans le schéma GOSALESHR. La requête renvoie les informations suivantes depuis les tables :
  • L'ID de l'employé, le nom donné et le nom de famille depuis la table EMPLOYEE.
  • L'ID du département en cours de l'employé depuis la table EMPLOYEE_HISTORY.
  • L'ID du département et le nom de la table ORGANIZATION du département.

La classe Dept1 qui est utilisée avec l'exemple de classe d'interface contient des données de la table ORGANIZATION.

La classe Dept2 qui est utilisée avec l'exemple de requête SQL intégrée contient des données de la table ORGANIZATION.

La classe Emp récupère les données des tables EMPLOYEE et EMPLOYEE_HISTORY. La classe Emp définit le bean Emp qui est le bean enfant des beans Dept1 et Dept2.

Exemple de requête SQL

La requête SQL renvoie des informations d'employé et les informations du département pour chaque employé.
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;
La table EMPLOYEE_HISTORY peut contenir plusieurs enregistrements pour un employé. Les informations sur l'employé en cours n'ont pas de date de fin. Le prédicat AND EH.RECORD_END_DATE IS NULL empêche la requête de renvoyer uniquement l'historique de l'employé en cours.

Pour plus d'informations sur la base de données GSDB et les tables qui sont utilisées dans cet exemple, voir Tables auxquelles l'exemple de beans imbriqués pureQuery accède.


Commentaires