Die JDBC 4.1-Spezifikation, Abschnitt 13.6 Automatisch generierte Werte abrufen sagt:
Es ist implementierungsabhängig, ob getGeneratedKeys
gibt generierte Werte zurück, nachdem executeBatch
aufgerufen wurde Methode.
Sie müssen also überprüfen, ob Ihr Treiber dies tatsächlich für Batch-Updates unterstützt. Wie in der Antwort von Philip O. angegeben, wird der Abruf von generierten Schlüsseln nicht mit Stapelaktualisierungen unterstützt, wie in Oracle 12 JDBC Standards Support dokumentiert:
Sie können automatisch generierte Schlüssel nicht mit der Stapelaktualisierung kombinieren.
Wenn es von Ihrem Treiber unterstützt wird, sollte Ihre Anweisung auf jeden Fall in den folgenden Code geändert werden, um den Treiber anzuweisen, generierte Schlüssel abzurufen:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Hinweis:Möglicherweise müssen Sie eine der anderen generierten Schlüsselvorbereitungsmethoden verwenden (prepareStatement(sql, columnIndexes)
oder prepareStatement(sql, columnNames)
), da Oracle die ROW_ID
zurückgibt mit der Methode in meinem Beispiel.