Вернуть значение первичного ключа после вставки в таблицу 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, это ноль.
Пожалуйста, посоветуйте, как получить первичный ключ.