Retorne o valor da chave primária após a inserção na tabela db2 pelo KeyHolder

Dia bom,

Eu tenho uma tabela no db2, onde o primáriois_autoincrement está configurado paraYes. Significa que toda vez que inserir dados nessa tabela, não é necessário passar o valor da chave primária, pois ela será gerada automaticamente.

No entanto, preciso recuperar o valor da chave primária após a inserção. O código é o seguinte:

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( );
}

A consulta de inserção é algo como segue:

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

Quando tento imprimir o keyHolder, ele é nulo.

Por favor, informe como obter a chave primária.

questionAnswers(0)

yourAnswerToTheQuestion