В моем файле persistence.xml настроена одна единица постоянства, но у меня есть две базы данных. Эти базы данных идентичны в отношении схемы. То, что я пытаюсь сделать, это:
Persistence.createEntityManagerFactory("unit", primaryProperties);
Persistence.createEntityManagerFactory("unit", secondaryProperties);
Свойства содержат различные параметры подключения (пользователь, пароль, URL-адрес jdbc, ...).
Я попробовал это на самом деле, и кажется, что hibernate (мой поставщик jpa) возвращает тот же экземпляр во втором вызове, не заботясь о свойствах.
Нужно ли копировать конфигурацию на второй блок?
Я прибил это к чему-то другому, чем я думал прежде. EntityManager (и фабрики), возвращенные вышеуказанными вызовами, работают как положено, но, похоже, проблема getDelegate()
. Мне нужно получить базовый сеанс для поддержки унаследованного кода в моем приложении, которое напрямую зависит от hibernate api. Что я сделал, это:
final Session session = (Session) manager.getDelegate();
Но каким-то образом я получаю сеанс, работающий с первичной базой данных, даже когда использую диспетчер сущностей, который работает на втором.