Можно ли получить сгенерированный ключ от вставки, используя дескриптор в JDBI?

Я знаю, что есть @GeneratedKeys, но я не могу использовать его с обработчиком (я использую обработчик в своих тестах).

1 ответ

Решение

Да, абсолютно возможно получить сгенерированные ключи (например, первичные ключи с автоинкрементом), используя дескриптор (я предполагаю, что вы имеете в виду дескриптор, а не обработчик). Например, предположим, что сгенерирован целочисленный ключ:

handle.createStatement("INSERT ...")
    .bind("foo", foo)
    .executeAndReturnGeneratedKeys(IntegerMapper.FIRST).first();

Обратите внимание, что существует зависимость от драйвера JDBC, поддерживающего java.sql.Statement.getGeneratedKeys(), но если подход возврата на основе аннотаций работает для вашей базы данных, я ожидаю, что этот подход также подойдет.

В JDBI 3 это изменилось на

 handle.createUpdate("INSERT ...")
   .bind("foo", foo)
   .executeAndReturnGeneratedKeys("id")
   .mapTo(Long.class)
   .one()
Другие вопросы по тегам