Dbms_metadata unable to extract metadata in springboot/jpa/hibernate

PROBLEM DESCRIPTION:

This appears to be a cosmetic/logging issue encountered when running Spring Boot 3.5.8 with JDK 21, JPA, and Hibernate.

Environment Details

  • Database: Oracle AI Database Free 23.26.0.0

  • JDK: 21.0.8

  • JDBC API version: 4.3

  • Oracle JDBC driver: 23.7.0.25.01

  • UCP: 23.7.0.25.01

  • Hibernate ORM Core: 6.6.36.Final

Observed Behavior

During application startup, Hibernate logs detailed information about the database environment. For example:

2025-12-08T19:53:14.292+01:00  INFO 65529 --- [Demo] [           main] 
org.hibernate.orm.connections.pooling :
HHH10001005: Database info:
    Database JDBC URL [Connecting through datasource 'oracle.ucp.jdbc.PoolDataSourceImpl@4a6a6a69']
    Database driver: undefined/unknown
    Database version: 23.26
    Autocommit mode: undefined/unknown
    Isolation level: undefined/unknown
    Minimum pool size: undefined/unknown
    Maximum pool size: undefined/unknown

As shown above, most of the reported fields are logged as undefined/unknown, even though the application connects successfully and operates normally.

what is the issue, and can i raise or you raise a Hibernate issue in Jira , that i don’t get permission to do it
Thanks!

You’re connecting through a JNDI defined data source which doesn’t expose this information directly and there is no great way to acquire that information, so there is nothing that can be done to improve this.

This worked in Hibernate 6.5.2 The same configuration with Hibernate 6.5.2 - no “undefined/unknown” values appear.

The metadata is accessible I can successfully retrieve all metadata immediately after Hibernate initialization completes with the same data source :

@BeanBean
public CommandLineRunner logDatabaseMetadata(DataSource dataSource) {
return args → {
try (Connection connection = dataSource.getConnection()) {
DatabaseMetaData metaData = connection.getMetaData();
System.out.println("Driver Name: " + metaData.getDriverName());
System.out.println("Driver Version: " + metaData.getDriverVersion());
System.out.println("AutoCommit: " + connection.getAutoCommit());
System.out.println("Isolation Level: " + connection.getTransactionIsolation());

        if (dataSource instanceof oracle.ucp.jdbc.PoolDataSource poolDataSource) {
            System.out.println("Min Pool Size: " + poolDataSource.getMinPoolSize());
            System.out.println("Max Pool Size: " + poolDataSource.getMaxPoolSize());
        }
    }
};

}
**Output:**

Driver Name: Oracle JDBC driver
Driver Version: 23.7.0.25.01
AutoCommit: true
Isolation Level: 2
Min Pool Size: 5
Max Pool Size: 5

All metadata is available - i think it’s just being queried too early in JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata() .

Given that e.g. the HikariCP connection provider creates a connection in DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) but the data source connection provider doesn’t, this might be just an oversight then.
This might be a nice little improvement that you could work on if you care about it :slight_smile: