2009-04-03 1 views
2

Итак, у меня есть приложение весны, разделенное на несколько модулей, каждый в отдельном проекте. Каждый модуль имеет свои собственные объекты JPA, и я использую Spring ORM для конфигурации:Как сделать весовую нагрузку классов JPA из нескольких путей?

<beans ...> 

<context:component-scan 
    base-package="org.myapp.module1.persistence" /> 

<context:component-scan 
    base-package="org.myapp.module2.persistence" /> 

... 

<context:annotation-config /> 

<tx:annotation-driven /> 

... 

</beans> 

И persistence.xml файл выглядит следующим образом:

<persistence ...> 

<persistence-unit name="myunit" /> 

</persistence> 

Моя проблема заключается в том, что, когда контекст Spring инициализирует он будет искать только классы @Entity на одном и том же пути файла persistence.xml и будет игнорировать другие классы классов объектов.

Я попытался иметь несколько persistence.xml, каждый из которых находится в том же пути, что и классы @Entity, но в этом случае, когда Spring найдет первый файл persistence.xml, он перестанет загружаться и не найдет классы @Entity на других пути.

Как я могу заставить Spring смотреть на все?

ответ

4

В случае, если вы хотите, чтобы создать единый блок сохранения состояния из нескольких persistence.xml файлов вы можете использовать MergingPersistenceUnitManager доступны в Spring Data JPA. Не забудьте указать все ваши единицы персидмента с одинаковым именем. Конечно, вы должны использовать безразличный импорт для persistence.xml: classpath*:META-INF/persistence.xml

С уважением, Олли

+0

связь нарушается. Обновленная ссылка: http://redmine.synyx.org/projects/minos/repository/changes/trunk/modules/core/src/main/java/org/synyx/minos/support/jpa/MergingPersistenceUnitManager.java – rochb

+0

Спасибо за подсказка, rok. Я починил это... –