I'm using schema based multi-tenancy providing implementations for both MultiTenantConnectionProvider & CurrentTenantIdentifierResolver. Trying to get a hibernate session for a single tenant fails with an NPE. Looking into hibernate's source code, it seems that JDBCServicesImpl initializes the connectionProvider to null in the else block
private JdbcConnectionAccess buildJdbcConnectionAccess(Map configValues) {
final MultiTenancyStrategy multiTenancyStrategy = MultiTenancyStrategy.determineMultiTenancyStrategy( configValues );
if ( MultiTenancyStrategy.NONE == multiTenancyStrategy ) {
connectionProvider = serviceRegistry.getService( ConnectionProvider.class );
return new ConnectionProviderJdbcConnectionAccess( connectionProvider );
}
else {
connectionProvider = null;
final MultiTenantConnectionProvider multiTenantConnectionProvider = serviceRegistry.getService( MultiTenantConnectionProvider.class );
return new MultiTenantConnectionProviderJdbcConnectionAccess( multiTenantConnectionProvider );
}
}
Please find the test case for this here - http://pastebin.com/7Mt9wtHt and its stacktrace - http://pastebin.com/8ygAu7eh
Is there something basic I am missing out?