From cb50e716b6eff3c10432c5fcb6232245f7c65519 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Thu, 15 Aug 2024 15:33:46 +0200 Subject: [PATCH] Fix MultiTenantConnectionProvider implementations in Hibernate examples. --- .../db/NoOpConnectionProvider.java | 25 +++++++++++-------- .../schema/ExampleConnectionProvider.java | 12 ++++++--- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/jpa/multitenant/db/src/main/java/example/springdata/jpa/hibernatemultitenant/db/NoOpConnectionProvider.java b/jpa/multitenant/db/src/main/java/example/springdata/jpa/hibernatemultitenant/db/NoOpConnectionProvider.java index 7e3a48b0..d4e4548a 100644 --- a/jpa/multitenant/db/src/main/java/example/springdata/jpa/hibernatemultitenant/db/NoOpConnectionProvider.java +++ b/jpa/multitenant/db/src/main/java/example/springdata/jpa/hibernatemultitenant/db/NoOpConnectionProvider.java @@ -42,17 +42,6 @@ public class NoOpConnectionProvider implements MultiTenantConnectionProvider, Hi connection.close(); } - @Override - public Connection getConnection(String schema) throws SQLException { - - return dataSource.getConnection(); - } - - @Override - public void releaseConnection(String s, Connection connection) throws SQLException { - connection.close(); - } - @Override public boolean supportsAggressiveRelease() { return false; @@ -72,4 +61,18 @@ public class NoOpConnectionProvider implements MultiTenantConnectionProvider, Hi public void customize(Map hibernateProperties) { hibernateProperties.put(AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER, this); } + + @Override + public Connection getConnection(Object tenantIdentifier) throws SQLException { + return dataSource.getConnection(); + } + + /* + * (non-Javadoc) + * @see org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider#releaseConnection(java.lang.Object, java.sql.Connection) + */ + @Override + public void releaseConnection(Object tenantIdentifier, Connection connection) throws SQLException { + connection.close(); + } } diff --git a/jpa/multitenant/schema/src/main/java/example/springdata/jpa/hibernatemultitenant/schema/ExampleConnectionProvider.java b/jpa/multitenant/schema/src/main/java/example/springdata/jpa/hibernatemultitenant/schema/ExampleConnectionProvider.java index c482c5f8..cacd066d 100644 --- a/jpa/multitenant/schema/src/main/java/example/springdata/jpa/hibernatemultitenant/schema/ExampleConnectionProvider.java +++ b/jpa/multitenant/schema/src/main/java/example/springdata/jpa/hibernatemultitenant/schema/ExampleConnectionProvider.java @@ -43,14 +43,20 @@ public class ExampleConnectionProvider implements MultiTenantConnectionProvider, } @Override - public Connection getConnection(String schema) throws SQLException { + public Connection getConnection(Object tenantIdentifier) throws SQLException { + final Connection connection = dataSource.getConnection(); - connection.setSchema(schema); + connection.setSchema(tenantIdentifier.toString()); return connection; } + /* + * (non-Javadoc) + * @see org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider#releaseConnection(java.lang.Object, java.sql.Connection) + */ @Override - public void releaseConnection(String s, Connection connection) throws SQLException { + public void releaseConnection(Object tenantIdentifier, Connection connection) throws SQLException { + connection.setSchema("PUBLIC"); connection.close(); }