JDBC 4.1-specifikationen, avsnitt 13.6 Hämta automatiskt genererade värden säger:
Det är implementeringsdefinierat om
getGeneratedKeyskommer att returnera genererade värden efter att ha anropatexecuteBatchmetod.
Så du måste kontrollera om din drivrutin verkligen stöder den för batchuppdateringar. Som indikeras i svaret av Philip O., stöds inte hämtning av genererade nycklar med batchuppdateringar som dokumenterats i Oracle 12 JDBC Standards Support:
Du kan inte kombinera automatiskt genererade nycklar med batchuppdatering.
I vilket fall som helst, om det stöds av din drivrutin, bör ditt förberedande uttalande ändras till koden nedan för att instruera föraren att hämta genererade nycklar:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Obs:du kan behöva använda en av de andra genererade nycklarna förberedelsemetoder (prepareStatement(sql, columnIndexes) eller prepareStatement(sql, columnNames) ) eftersom Oracle returnerar ROW_ID med metoden i mitt exempel.