Можно ли получить сгенерированный ключ от вставки, используя дескриптор в 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()