PostgreSQL database defines the type UUID (this type does not exist in java.sql.Types).
I want to use this kind of PreparedStatement:
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?