Il existe deux manières d'interagir dynamiquement avec les tables/colonnes (c'est-à-dire sans utiliser le générateur de code) dans jOOQ :
Utiliser du SQL brut (org.jooq.SQL
)
C'est ce que vous faites. Vous pouvez évidemment qualifier les colonnes directement dans votre Field
SQL brut références de deux manières :
En répétant le "tmp"
chaîne dans chaque champ :
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
En incorporant le "tmp"
référence dans le modèle SQL brut :
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("{0}.type", String.class, TMP);
Field<String> TOKEN = DSL.field("{0}.token", String.class, TMP);
La fonctionnalité SQL simple est documentée ici dans le manuel
Utiliser des références qualifiées (org.jooq.Name
)
C'est probablement ce que vous voulez faire à la place. Vous écrivez :
Table<Record> TMP = DSL.table(DSL.name("tmp"));
Field<String> TYPE = DSL.field(DSL.name("tmp", "type"), String.class);
Field<String> TOKEN = DSL.field(DSL.name("tmp", "token"), String.class);
La fonctionnalité de nommage est décrite ici dans le manuel .
Les avantages de cette approche sont :
- Aucun risque d'injection SQL
- La sensibilité à la casse est prise en compte
- Mappage de table et d'autres transformations AST fonctionneront également