избегать автоматической загрузки файлов hbm

У меня есть две базы данных (Oracle и SqlServer), и у меня есть одна и та же таблица (Province) в обеих. Я использую JPA с Hibernate, и мне нужно выполнять операции с любой из этих баз данных.

У меня есть файл сопоставления hbm для каждой таблицы, но оба относятся к одному и тому же классу (Province.java). Я настроил hibernate.Oracle.cfg.xml и hibernate.SqlServer.cfg.xml, чтобы правильно объявить сопоставления для каждой БД.

Я также использую Spring.

Вот моя проблема. Когда приложение загружается (на самом деле JUnit), оно пытается загрузить оба файла hbm, вызывая DuplicateMappingException, потому что Province.java дважды. Более того, если я сохраняю только один файл hbm и один файл конфигурации спящего режима, он все равно выдает исключение DuplicateMappingException; НО, если я удалю отображение из файла конфигурации гибернации, оно сработает (но я этого не хочу). Это означает, что файл hbm загружается автоматически, а затем загружается снова, поскольку он объявлен в файле конфигурации.

Есть ли способ избежать автоматической загрузки файлов hbm?


person Marcelo De Andrea    schedule 08.12.2012    source источник
comment
У вас проблемы только с JUnit или при обычном запуске приложения?   -  person Atropo    schedule 08.12.2012
comment
только с JUnit, потому что я не пытался запустить его, пока настраиваю приложение   -  person Marcelo De Andrea    schedule 10.12.2012


Ответы (1)


Наконец-то мне удалось найти решение этой проблемы.
Я добавил ‹exclude-unlisted-classes›false‹/exclude-unlisted-classes› к обоим модулям сохраняемости в файле persistence.xml. и это предотвратило автоматическую загрузку файлов hbm. Мне также пришлось поместить сопоставление как в hibernate.Oracle.cfg.xml, так и в hibernate.SqlServer.cfg.xml.

person Marcelo De Andrea    schedule 11.12.2012