Спецификацията на JDBC 4.1, раздел 13.6 Извличане на автоматично генерирани стойности казва:
Дефинира се от реализацията дали
getGeneratedKeys
ще върне генерирани стойности след извикване наexecuteBatch
метод.
Така че ще трябва да проверите дали вашият драйвер действително го поддържа за пакетни актуализации. Както е посочено в отговора на Филип О., извличането на генерирани ключове не се поддържа с пакетни актуализации, както е документирано в Oracle 12 JDBC Standards Support:
Не можете да комбинирате автоматично генерирани ключове с пакетно актуализиране.
Във всеки случай, ако се поддържа от вашия драйвер, вашето изявление за подготовка трябва да бъде променено на кода по-долу, за да инструктира драйвера да извлече генерирани ключове:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Забележка:може да се наложи да използвате някой от другите генерирани методи за подготовка на ключове (prepareStatement(sql, columnIndexes)
или prepareStatement(sql, columnNames)
), тъй като Oracle ще върне ROW_ID
с метода в моя пример.