Spesifikasi JDBC 4.1, bagian 13.6 Mengambil Nilai yang Dihasilkan Otomatis mengatakan:
Ini adalah implementasi yang ditentukan, apakah
getGeneratedKeys
akan mengembalikan nilai yang dihasilkan setelah menjalankanexecuteBatch
metode.
Jadi, Anda perlu memeriksa apakah driver Anda benar-benar mendukungnya untuk pembaruan batch. Seperti yang ditunjukkan dalam jawaban oleh Philip O., pengambilan kunci yang dihasilkan tidak didukung dengan pembaruan batch seperti yang didokumentasikan dalam Dukungan Standar Oracle 12 JDBC:
Anda tidak dapat menggabungkan kunci yang dibuat secara otomatis dengan pembaruan batch.
Bagaimanapun jika itu didukung oleh driver Anda, maka pernyataan Anda, siapkan harus diubah ke kode di bawah ini untuk menginstruksikan driver untuk mengambil kunci yang dihasilkan:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
Catatan:Anda mungkin perlu menggunakan salah satu metode persiapan kunci yang dihasilkan lainnya (prepareStatement(sql, columnIndexes)
atau prepareStatement(sql, columnNames)
) karena Oracle akan mengembalikan ROW_ID
dengan metode dalam contoh saya.