Ruft den Primärschlüsselwert nach dem Einfügen von KeyHolder in die Tabelle db2 zurück

Schönen Tag,

Ich habe eine Tabelle in DB2, wo die primäreis_autoincrement ist eingestellt aufYes. Bedeutet, dass bei jedem Einfügen von Daten in diese Tabelle der Primärschlüsselwert nicht übergeben werden muss, da er automatisch generiert wird.

Nach dem Einfügen muss der Primärschlüsselwert jedoch zurückgegeben werden. Der Code lautet wie folgt:

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

Die Einfügeabfrage sieht folgendermaßen aus:

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

Wenn ich versuche, den keyHolder auszudrucken, ist er null.

Bitte geben Sie an, wie Sie den Primärschlüssel erhalten.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage