Я создал метод с именем deduceSchema, который запускаю при настройке SessionFactory. Он открывает соединение jdbc с использованием источника данных (поскольку у вас еще нет сеанса Hibernate) и запрашивает «выбрать пользователя из двойного», чтобы получить зарегистрированного пользователя. Это будет точно, если пользователь, вошедший в систему, также владеет таблицами. Если нет, я использую переменную окружения jndi для переопределения.
Получив схему, я изменяю конфигурацию Hibernate, чтобы установить ее для каждой таблицы, хотя это необходимо, только если зарегистрированный пользователь отличается от схемы:
for (Iterator iter = configuration.getTableMappings(); iter.hasNext();) {
Table table = (Table) iter.next();
table.setSchema(schema);
}