La specifica JDBC 4.1, sezione 13.6 Recupero dei valori generati automaticamente dice:
È definito dall'implementazione se getGeneratedKeys
restituirà i valori generati dopo aver invocato executeBatch
metodo.
Quindi dovrai verificare se il tuo driver lo supporta effettivamente per gli aggiornamenti batch. Come indicato nella risposta di Philip O., il recupero delle chiavi generate non è supportato con gli aggiornamenti batch come documentato in Oracle 12 JDBC Standards Support:
Non puoi combinare chiavi generate automaticamente con l'aggiornamento batch.
In ogni caso, se è supportato dal tuo autista, la tua dichiarazione prepara dovrebbe essere modificata nel codice seguente per istruire il conducente a recuperare le chiavi generate:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Nota:potrebbe essere necessario utilizzare uno degli altri metodi di preparazione delle chiavi generati (prepareStatement(sql, columnIndexes)
o prepareStatement(sql, columnNames)
) poiché Oracle restituirà il ROW_ID
con il metodo nel mio esempio.