何が返されるかわからなかったので、試してみたらROWIDが取得出来たのですが、OracleのドキュメントにROWIDが取得されることが明記されていました。
以下が、ドキュメントの内容となります。
java.sql.Statement キー列を明示的に指定しないと、Oracle JDBCドライバでは取り出す列を特定できません。特定できるのは、列名または列索引の配列が使用されている場合です。 ただし、int型のStatement.RETURN_GENERATED_KEYSフラグが使用されている場合、Oracle JDBCドライバではこれらの列を特定できません。int型フラグを使用して自動生成キーが戻るように指定した場合は、ROWID擬似列がキーとして戻ります。 このROWIDは、ResultSetオブジェクトからフェッチして、他の列を取り出すために使用できます。
例
PreparedStatement statement = connection.prepareStatement("INSERT INTO HOGE VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS); statement.setLong(1, 1); statement.setString(2, "name"); statement.executeUpdate(); ResultSet generatedKeys = statement.getGeneratedKeys(); if (generatedKeys.next()) { ROWID rowid = (ROWID) generatedKeys.getRowId(1); System.out.println(rowid.stringValue()); }上のコードを実行した場合、標準出力にはROWIDを文字列表現に変換した値が出力されます。
例えば、「AAAOKLAAEAAACQTAAA」のような値が出力されます。