Я создаю приложение, использующее PostgreSQL в производственной среде и H2 для локальной разработки, и тестирую с использованием последних версий Hibernate и Java 8.
Реализация прекрасно работает для PostgreSQL, но вызывает проблемы при использовании H2.Если я вызываю одну и ту же конечную точку для создания сущности для 2 разных арендаторов, все сущности создаются в одной (первой) схеме, которая была вызвана.
getConnection () в моем MultiTenantConnectionProviderImpl:
@Override
public Connection getConnection(String tenantIdentifier) throws SQLException {
final Connection connection = getAnyConnection();
connection.setSchema(tenantIdentifier);
return connection;
}
application.properties:
spring.datasource.url=jdbc:h2:mem:mydb;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE
spring.datasource.username=sa
spring.datasource.password=
Обратите внимание, что хотя правильный tenantIdentifier
передается в getConnection, запроспо-прежнему работает с неверной схемой.
Может ли это быть проблемой с пулом соединений Hikari, который кэширует соединения и не передает вызов setSchema()
?