Génération de beans destinés à contenir les ensembles de résultats des instructions SQL SELECT

Vous pouvez générer un bean qui va contenir l'ensemble de résultats renvoyé par une instruction. Vous pouvez utiliser une instruction SQL SELECT qui se trouve dans n'importe quel littéral chaîne d'une classe Java comportant une instruction SQL SELECT valide, sous réserve que cette classe Java relève dans un projet Java prenant en charge pureQuery.

Procédure

Pour générer un bean destiné à contenir l'ensemble de résultats renvoyé par une instruction SELECT :

  1. Dans l'éditeur Java, placez le curseur texte sur l'instruction, cliquez sur cette instruction avec le bouton droit de la souris puis sélectionnez pureQuery > Générer le code pureQuery. L'assistant Génération de code pureQuery à partir d'une instruction SQL s'ouvre.
  2. Suivez les étapes de l'assistant.
  3. Cliquez sur Terminer pour générer le bean.

Résultats

Si vous n'utilisez pas de clauses AS dans les requêtes SQL qui produisent des jointures ou des unions, ou qui contiennent des colonnes résultantes, les ensembles de résultats sont susceptibles de contenir des colonnes dont les noms ne sont pas uniques. Le plan de travail est capable de résoudre cet incident lors de la génération d'un bean permettant de représenter les ensembles de résultats en fonction du type de base de données utilisé par votre application.
  • DB2 for Linux, UNIX, and Windows ; DB2 for z/OS ; Informix Dynamic Server : le plan de travail utilise l'annotation @Column sur les propriétés associées aux colonnes portant le même nom qu'une ou plusieurs autres colonnes.
    Par exemple, si votre application exécute la simple requête suivante :
    	select a.col1, b.col1 from a, b where a.id=b.id;
    les méthodes set() pour les propriétés correspondantes dans les beans contenant les résultats de requête doivent inclure des annotations @Column indiquant le nom de la table dans laquelle apparaissent les deux colonnes id :
    public class JoinExample{
    
      private int a_id;
      private int b_id;
    
      @Column (name="id", table="a")
      public void setA_id (int a_id)
      {
        this.a_id = a_id;
      }
      public int getA_id ()
      {
        return a_id;
      }
    
      @Column (name="id", table="b")
      public void setB_id (int b_id)
      {
        this.b_id = b_id;
      }
      public int getB_id ()
      {
        return b_id;
      }
    }
  • Oracle : le plan de travail n'utilise pas l'attribut table de l'annotation @Column pour mapper les colonnes problématiques aux propriétés du bean. Vous devez utiliser l'une des méthodes suivantes pour les mapper :
    • Utilisez la clause AS de l'instruction SELECT pour affecter des noms uniques aux colonnes dans les résultats de la requête.
    • Utilisez une classe RowHandler pouvant être utilisée avec les colonnes des résultats de la requête par leur numéro d'index plutôt que par leur nom. Voir L'interface RowHandler <ROW>.

Commentaires