2016-05-18 2 views
2

В запросе слияния, я всегда могу сделать:Почему jooq не разрешает запись в ifNotMatchedInsert?

public <R> void insertOrUpdateRecord(TableRecord<R> record, Condition match, Map<? extends Field<?>, ?> updates) { 
    ctx.mergeInto(record.getTable()).using(ctx.selectOne()) 
     .on(match) 
     .whenMatchedThenUpdate() 
     .set(updates) 
     .whenNotMatchedThenInsert(record.fields()) 
     .values(toArray(record)); 
} 

Здесь toArray преобразует TableRecord ->Object[] в том же порядке, что и соответствующие поля возвращаются в record.fields().

Итак, есть ли какая-либо причина, почему я не могу сделать это прямо:

whenNotMatchedThenInsert(record) 

Поскольку цель в значительной степени, чтобы вставить новую запись?

ответ

0

Желаемая функция уже доступна, с немного другим синтаксисом:

.whenNotMatchedThenInsert() 
    .set(record); 

Это будет принимать во внимание все значения из записи аргументов, для которых Record.changed(Field) флага является true

+0

Не ответ Я искал, но http://i.imgur.com/mrHb59c.png –

Смежные вопросы