Specifikace JDBC 4.1, sekce 13.6 Načítání automaticky generovaných hodnot říká:
Je definováno implementací, zda
getGeneratedKeys
po vyvoláníexecuteBatch
vrátí vygenerované hodnoty metoda.
Budete tedy muset zkontrolovat, zda jej váš ovladač skutečně podporuje pro dávkové aktualizace. Jak je uvedeno v odpovědi Philipa O., načítání vygenerovaných klíčů není podporováno dávkovými aktualizacemi, jak je zdokumentováno v Oracle 12 JDBC Standards Support:
Automaticky generované klíče nelze kombinovat s dávkovou aktualizací.
V každém případě, je-li to podporováno vaším ovladačem, váš příkaz by měl být změněn na kód níže, aby dal řidiči pokyn k získání vygenerovaných klíčů:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Poznámka:Možná budete muset použít jednu z dalších vygenerovaných metod přípravy klíčů (prepareStatement(sql, columnIndexes)
nebo prepareStatement(sql, columnNames)
), protože Oracle vrátí ROW_ID
s metodou v mém příkladu.