La especificación JDBC 4.1, sección 13.6 Recuperación de valores generados automáticamente dice:
Está definido por la implementación en cuanto a si getGeneratedKeys
devolverá los valores generados después de invocar el executeBatch
método.
Por lo tanto, deberá verificar si su controlador realmente lo admite para actualizaciones por lotes. Como se indica en la respuesta de Philip O., la recuperación de claves generadas no es compatible con actualizaciones por lotes como se documenta en Oracle 12 JDBC Standards Support:
No puede combinar claves generadas automáticamente con actualización por lotes.
En cualquier caso, si su controlador lo admite, su declaración debe cambiarse al siguiente código para indicarle al controlador que recupere las claves generadas:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Nota:es posible que deba usar uno de los otros métodos de preparación de claves generadas (prepareStatement(sql, columnIndexes)
o prepareStatement(sql, columnNames)
) ya que Oracle devolverá el ROW_ID
con el método de mi ejemplo.