2013-03-13 10 views
7

Ho una domanda come questa:JOOQ concatenazione

Result<?> result = create.select(CONSUMER.CONS_ID_NO, 
              CONSUMER.CONS_NAME, 
              concat(CONSUMER.AREA_CODE, "/", CONSUMER.CONS_NO, "/", CONSUMER.CAT_CODE).as("ConsNo"), 
              CONSUMER.ARREARS) 
              .from(CONSUMER) 
              .fetch(); 

Ho scritto questo secondo il JOOQ Manual, ma sto ottenendo un errore che dice:

Il metodo concat (String ...) nel tipo industriale non è applicabile per gli argomenti (TABLEFIELD, String, TABLEFIELD, stringa, TABLEFIELD)

Sto usando JOOQ-3.

+0

io non sono abbastanza familiarità con JOOQ di mettere questo fuori come una risposta, ma chiedo se si desidera utilizzare il metodo di TABLEFIELD .getName(), per ottenere una stringa invece di un campo tabella per CONSUMER.AREA_CODE ecc. – DarenW

risposta

7

Sembra che il campione nel manuale non funzioni. Tuttavia, è possibile convertire una stringa in Archiviato tramite org.jooq.impl.Factory.val.

Record result = create.select(
      concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("Full Name") 
    ).from(AUTHOR).fetchAny(); 

prega di fare riferimento al this email from Lukas Eder per i dettagli