Since upgrading to spring-boot 3.1 ( spring framework 6.0.9 ) I'm experiencing a new exception for methods that uses OffsetDateTime as a parameter in database queries ( MySQL ). I'm using BeanPropertySqlParameterSource and passing a record that has OffsetDateTime as a field and here is the exception:

Unsupported SQL type: TIMESTAMP_WITH_TIMEZONE
    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:104)
SQLExceptionSubclassTranslator.java:104
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
AbstractFallbackSQLExceptionTranslator.java:70
    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1538)
JdbcTemplate.java:1538
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:667)
JdbcTemplate.java:667
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:960)
JdbcTemplate.java:960
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:981)
JdbcTemplate.java:981
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:328)

After some research, it looks like the problem is caused by https://github.com/spring-projects/spring-framework/pull/30123 because MySQL doesn't support these new types ( https://github.com/mysql/mysql-connector-j/blob/release/8.0/src/main/core-api/java/com/mysql/cj/MysqlType.java#L681 )

Comment From: jhoeller

Thanks for the report! We fall back to a plain setObject call without a SQL type now in case of a not-supported exception which seems generally sensible. We do the same for setNull even if MySQL is actually leniently ignoring the type value there in any case.