Я не из Hibernate, поэтому я не знаю, есть ли какой-нибудь нативный способ сделать это в самом Hibernate. В чистом методе Oracle при подключении к базе данных получите имя текущей схемы и назначьте его переменной, а затем используйте его в операторе SQL.
select sys_context( 'userenv', 'current_schema' ) as SCHEMA from dual;
Приведенный выше вывод, который можно назначить переменной SCHEMA в коде приложения Hibernate (опять же, я не уверен, что такое метод использования переменной в Hibernate, поэтому предположим, что пока $
):
SELECT * FROM $SCHEMA.USERS u WHERE u.id = 100;
Итак, когда вы подключитесь к DB1
, вы получите имя схемы, скажем, SCHEMA_1
, а затем из DB2
вы получите SCHEMA_2
. Но эти значения будут присвоены переменной $SCHEMA
, поэтому вам не нужно беспокоиться об ее изменении, поскольку она будет динамически принимать имя схемы.