diff --git a/hibernate-hikaricp/src/main/java/org/hibernate/hikaricp/internal/HikariCPConnectionProvider.java b/hibernate-hikaricp/src/main/java/org/hibernate/hikaricp/internal/HikariCPConnectionProvider.java index 725976271bec..26838a706a1c 100644 --- a/hibernate-hikaricp/src/main/java/org/hibernate/hikaricp/internal/HikariCPConnectionProvider.java +++ b/hibernate-hikaricp/src/main/java/org/hibernate/hikaricp/internal/HikariCPConnectionProvider.java @@ -55,7 +55,21 @@ public void configure(Map props) throws HibernateException { ConnectionInfoLogger.INSTANCE.configureConnectionPool( "HikariCP" ); hcfg = HikariConfigurationUtil.loadConfiguration( props ); - hds = new HikariDataSource( hcfg ); + + boolean initializedHikariDataSource = false; + + // Support a HikariDataSource already configured by classes which extend this class + if(props.containsKey("HikariDataSource")) { + Object ohds = props.get("HikariDataSource"); + if(ohds instanceof HikariDataSource) { + hds = (HikariDataSource) ohds; + initializedHikariDataSource = true; + } + } + if(!initializedHikariDataSource) { + // Default logic if no subclass has configured a HikariDataSource, do so now + hds = new HikariDataSource( hcfg ); + } } catch (Exception e) { ConnectionInfoLogger.INSTANCE.unableToInstantiateConnectionPool( e );