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 :
- 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 . L'assistant Génération de code pureQuery à partir d'une instruction SQL s'ouvre.
- Suivez les étapes de l'assistant.
- 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>.