Вы можете использовать вариант , этот подход .
Он в основном использует функции многопользовательского режима Hibernate в Spring Data, предоставляя пользовательский MultiTenantConnectionProvider
. Поставщик соединения считывает сведения о соединении с карты источников данных. Вы можете указать другое значение для hibernate.physical_naming_strategy
в каждом из источников данных. Однако я не уверен, есть ли способ указать префикс для каждого источника данных в качестве свойства. Вы можете получить отдельный подкласс PhysicalNamingStrategy
для каждого арендатора. Может быть ужасно.
Какую БД вы используете? В качестве альтернативы, вы могли бы решить проблему, предоставив схему для каждого арендатора и сопоставив их таблицы со схемой по умолчанию, используя имена без префиксов, что-то вроде:
CREATE SYNONYM C1.INVOICE FOR DEFAULT.C1_INVOICE;
Таким образом, вы можете использовать стандартную стратегию Hibernate MultitenancyStrategy.SCHEMA
.