2014-10-19 9 views
4

То, что я на самом деле хочу, чтобы написать следующий запрос в JOOQ:возвращение идентификатора в дублирование KEY в JOOQ

stmt = connection.prepareStatement(
    "INSERT INTO `tbl` (`name`, `service_id`, `device_id`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`)", 
    Statement.RETURN_GENERATED_KEYS 
); 

Я не смог найти способ сделать это в JOOQ. Является ли это возможным?

ответ

0

Это может помочь вам. На данный момент я использую это:

Field<Integer> LAST_INSERT_ID = DSL.function("LAST_INSERT_ID", Integer.class, PACKAGE.ID); 

dsl.insertInto(PACKAGE) 
    .set(dsl.newRecord(PACKAGE, packagePojo)) 
    .onDuplicateKeyUpdate() 
    .set(PACKAGE.ID, LAST_INSERT_ID) 
    .set(PACKAGE.PTR_JOB, packagePojo.getPtrJob()) 
    .set(PACKAGE.PACK_NUMBER, packagePojo.getPackNumber()) 
    .set(PACKAGE.RACK, packagePojo.getRack()