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.