Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qualificando um nome de coluna de tabela temporária no jOOQ


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: