Hay dos formas de interactuar con tablas/columnas dinámicamente (es decir, sin usar el generador de código) en jOOQ:
Usando SQL simple (org.jooq.SQL
)
Eso es lo que estás haciendo. Obviamente, puede calificar las columnas directamente en su SQL simple Field
referencias de dos formas:
Repitiendo el "tmp"
cadena en cada campo:
Table<Record> TMP = DSL.table("tmp");
Field<String> TYPE = DSL.field("tmp.type", String.class);
Field<String> TOKEN = DSL.field("tmp.token", String.class);
Incrustando el "tmp"
referencia en la plantilla de SQL simple:
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 funcionalidad de SQL simple se documenta aquí en el manual
Usando referencias cualificadas (org.jooq.Name
)
Eso es probablemente lo que quieres hacer en su lugar. Escribirás:
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 función de asignación de nombres se describe aquí en el manual .
Las ventajas de este enfoque son:
- Sin riesgo de inyección SQL
- Se cuida la distinción entre mayúsculas y minúsculas
- Asignación de tablas y otras transformaciones AST también funcionarán