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
を返すため 私の例の方法で。