JDBC 4.1-specifikationen, avsnitt 13.6 Hämta automatiskt genererade värden säger:
Det är implementeringsdefinierat om
getGeneratedKeys
kommer att returnera genererade värden efter att ha anropatexecuteBatch
metod.
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.