1

I'm trying to support a multi-tenant by schema in my spring boot (1.4) application. I have the following in my config:

hibernate:
        format_sql: true
        default_schema: corrto
        multiTenancy: SCHEMA
        tenant_identifier_resolver: com.config.HeaderTenantIdentifierResolver
        multi_tenant_connection_provider: com.config.SchemaPerTenantConnectionProvider

My MultiTenantConnectionProvider implementation is as follows:

public class SchemaPerTenantConnectionProvider implements MultiTenantConnectionProvider {

    @Autowired
    private DataSource dataSource;

    @Override
    public Connection getAnyConnection() throws SQLException {
        return this.dataSource.getConnection();
    }

    @Override
    public void releaseAnyConnection(Connection connection) throws SQLException {
        connection.close();
    }

    @Override
    public Connection getConnection(String tenantIdentifier) throws SQLException {
        final Connection connection = this.getAnyConnection();
        // need to do stuff here
        return connection;
    }

    @Override
    public void releaseConnection(String tenantIdentifier, Connection connection) throws SQLException {

    }

    @Override
    public boolean supportsAggressiveRelease() {
        return true;
    }

    @Override
    public boolean isUnwrappableAs(Class unwrapType) {
        return false;
    }

    @Override
    public <T> T unwrap(Class<T> unwrapType) {
        return null;
    }
}

It is failing because dataSource is null. I'm assuming it hasn't been created yet but I'm having a hard time finding solutions via Google.

Gregg
  • 34,973
  • 19
  • 109
  • 214

1 Answers1

0

I met the same problem.It seems that in the yml ,HeaderTenantIdentifierResolver and SchemaPerTenantConnectionProvider is managed by hibernate.See here.

linghu
  • 133
  • 3
  • 16