Skip to content

When using Oracle, JdbcClient.update(KeyHolder) does not work without explicit key column names #31607

Closed
@zakaria-shahen

Description

@zakaria-shahen

Hello
When use Oracle DB The JdbcClient.update(KeyHolder) method not work with named parameters

Example:

        jdbcClient.sql(insert_sql)
                .paramSource(objectModel)
                .update(keyHolder);
        var id = keyHolder.getKey();

and throw

org.springframework.dao.DataRetrievalFailureException: The generated key type is not supported. Unable to cast [oracle.sql.ROWID] to [java.lang.Number].
	at org.springframework.jdbc.support.GeneratedKeyHolder.getKeyAs(GeneratedKeyHolder.java:86) ~[spring-jdbc-6.1.0-RC2.jar:6.1.0-RC2]
	at org.springframework.jdbc.support.GeneratedKeyHolder.getKey(GeneratedKeyHolder.java:65) ~[spring-jdbc-6.1.0-RC2.jar:6.1.0-RC2]

and when use NamedParameterJdbcOperations as workaround, it works

        namedParameterJdbcOperations.update(
                insert_sql, new SimplePropertySqlParameterSource(objectModel), keyHolder, new String[] {"id"}
        );

Metadata

Metadata

Assignees

Labels

in: dataIssues in data modules (jdbc, orm, oxm, tx)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions