Skip to content

Unable to bind a null value for UUID column with PostgreSQL [SPR-16669] #21210

Closed
@spring-projects-issues

Description

@spring-projects-issues

Rémi Aubel opened SPR-16669 and commented

PostgreSQL database defines the type UUID (this type does not exist in java.sql.Types).

I want to use this kind of PreparedStatement:

SELECT ... WHERE :VAL IS NOT NULL AND :VAL = <my_uuid_column>

And I want to bind a null value for VAL.
In this specific case, PostgreSQL JDBC driver requires the data type to be specified. And since the UUID data type does not exist in java.sql.Types, we must specify the type name as well, by calling PreparedStatement.setNull(\_, java.sql.Types.OTHER, "uuid").
With plain old java (Connection and PreparedStatement), this works fine.

Using NamedParameterJdbcTemplate (and providing the "data type" and "data type name" in a MapSqlParameterSource), I'm not able to make it work.
Under the hood, StatementCreatorUtils.setNull(\_, \_, type, typeName) delegates to PreparedStatement.setNull(\_, type) (with no type name) when type is Types.OTHER.

Shouldn't it call PreparedStatement.setNull(_, type, typeName) when typeName is provided (non null) instead?


Affects: 4.3.14, 5.0.4

Issue Links:

Referenced from: commits 9a722b4, 5629fa2

Backported to: 4.3.15

Metadata

Metadata

Assignees

Labels

in: dataIssues in data modules (jdbc, orm, oxm, tx)status: backportedAn issue that has been backported to maintenance branchestype: regressionA bug that is also a regression

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions