SpringBoot 3.2.0
I work on a SpringBoot project in which we do process Binary JSON content in Oracle DB 21.3.0.
We had a working solution with SpringBoot version 3.2.0.
Oracle driver is resolved to com.oracle.database.jdbc:ojdbc8:23.3.0.23.09
SpringBoot 3.2.2 and newer
With the upgrade to SpringBoot 3.2.4 logic is broken. When persisting JSON data to Oracle tables we get
org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [SELECT * FROM XXX_DATA ORDER BY xxx]; SQL state [99999]; error code [17004]; Invalid column type: getOracleObject not implemented for class oracle.jdbc.driver.T4CJsonAccessor
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1549)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:408)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:476)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:486)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:536)
In new version (since 3.2.2) oracle version gets resolved to
com.oracle.database.jdbc:ojdbc8 -> 21.9.0.0
See dependency versions
- 3.2.0 - Working
- com.oracle.database.jdbc:ojdbc8:23.3.0.23.09
- 3.2.1 - Working
- com.oracle.database.jdbc:ojdbc8:23.3.0.23.09
- 3.2.2 - Broken
- com.oracle.database.jdbc:ojdbc8:21.9.0.0
- 3.2.4 - Current - Broken
- com.oracle.database.jdbc:ojdbc8:21.9.0.0
My working solution is to manually upgrade the version of com.oracle.database.jdbc:ojdbc in SpringBoot above 3.2.2.
But what is the reason that this dependency got downgraded? Is it intentionally? Where is some hint in documentation or in code change?
Comment From: BenEfrati
Check this: https://github.com/spring-projects/spring-boot/issues/38943 https://github.com/spring-projects/spring-boot/commit/fee359ff5ec26f86c29f42c9a1b99811137fde1f
Comment From: rivancic
Thanks @BenEfrati. It wasn't immediately obvious to me that this not for production use actually renders in downgrade of dependency.
I'm aware of the consequences, will have to review requirements in my project. Should we explicitly upgrade the driver and mitigate any potential issues in production or exclude incompatible feature and stay with 19.x.
Closing the issue.