Existem duas maneiras de interagir com tabelas/colunas dinamicamente (ou seja, sem usar o gerador de código) no jOOQ:
Usando SQL simples (org.jooq.SQL
)
Isso é o que você está fazendo. Obviamente, você pode qualificar as colunas diretamente em seu
Field
SQL simples referências de duas maneiras:Repetindo o
"tmp"
string em 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);
Incorporando o
"tmp"
referência no modelo SQL simples: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);
A funcionalidade de SQL simples está documentada aqui no manual
Usando referências qualificadas (org.jooq.Name
)
Isso é provavelmente o que você quer fazer em vez disso. Você vai escrever:
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);
A funcionalidade de nomenclatura é descrita aqui no manual .
As vantagens desta abordagem são:
- Sem risco de injeção de SQL
- A diferenciação entre maiúsculas e minúsculas é cuidada
- Mapeamento de tabela e outras transformações AST também funcionarão