Вернуть значение первичного ключа после вставки в таблицу db2 с помощью KeyHolder

Добрый день,

У меня есть таблица в db2, где основнойis_autoincrement установлен вYes, Означает, что при каждой вставке данных в эту таблицу нет необходимости передавать значение первичного ключа, поскольку оно будет автоматически генерироваться.

Однако мне нужно вернуть значение первичного ключа после вставки. Код выглядит следующим образом:

public integer insertRecord() {

    //insertion sql code here
KeyHolder keyHolder = new GeneratedKeyHolder();

PreparedStatementCreatorFactory factory = new PreparedStatementCreatorFactory(
                getInsertBatch2( ), new int[] { 
                        java.sql.Types.TIMESTAMP, java.sql.Types.VARCHAR,
                        java.sql.Types.SMALLINT, java.sql.Types.DATE,
                        java.sql.Types.INTEGER } );

int updated = JdbcTemplate.update(
                factory.newPreparedStatementCreator( params ),  keyHolder);

log.trace("key value is " + keyHolder.getKey( );

    //after insertion, return primary key
    return id;
}

private String getInsertBatch2() {
    StringBuilder sb = new StringBuilder( );
    sb.append( "insert into " )
            .append( getDefaultSchema( ) )
            .append(
                    ".batches( startdatetime, type, manual, processdate, originalbatchid) " );
    sb.append( "values(?,?,?,?,?) " );
    return sb.toString( );
}

Запрос на вставку выглядит следующим образом:

insert into table1(startdatetime, type, manual, processdate, originalbatchid) value (-- all the value here -- );

Когда я пытаюсь распечатать keyHolder, это ноль.

Пожалуйста, посоветуйте, как получить первичный ключ.

Ответы на вопрос(0)

Ваш ответ на вопрос