JDBC 4.1仕様、セクション13.6自動生成された値の取得 言う:
getGeneratedKeysかどうかについては実装によって定義されますexecuteBatchを呼び出した後、生成された値を返します メソッド。
したがって、ドライバーがバッチ更新で実際にサポートしているかどうかを確認する必要があります。 Philip O.の回答に示されているように、生成されたキーの取得は、Oracle 12 JDBC Standards Supportに記載されているバッチ更新ではサポートされていません:
自動生成されたキーをバッチ更新と組み合わせることはできません。
いずれにせよ、それがドライバーによってサポートされている場合は、ステートメントの準備を以下のコードに変更して、生成されたキーを取得するようにドライバーに指示する必要があります。
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
注:生成された他のキーの1つを使用する必要がある場合がありますprepareメソッド(prepareStatement(sql, columnIndexes) またはprepareStatement(sql, columnNames) )OracleはROW_IDを返すため 私の例の方法で。