Мы разрабатываем веб-приложение с Spring, Hibernate и Maven очень модульным способом. Существуют основные проекты, определяющие доступ к данным и просмотр конкретных материалов, тогда есть модули, определяющие логику и сущности (@Entity
), а затем есть веб-приложение, определяющее контроллер и представление.
Теперь у нас есть модуль безопасности, определяющий объекты безопасности, такие как учетная запись и роль, и у нас есть прототип-модуль, определяющий некоторые примерные объекты, такие как клиент и заказ. Оба имеют PersistenceUnit
, определенные внутри persistence.xml
, который довольно много пуст, за исключением имени PersistenceUnit, поскольку вся настройка базы данных выполняется в веб-приложении с помощью datasource.xml. Предполагается, что веб-приложение загружает обе банки в качестве зависимостей maven.
Оба проекта будут создавать тонкие, автоматически очищать все объекты и создавать их для своих модульных тестов. Они также будут загружены внутри веб-приложения успешно, если будут добавлены индивидуально.
Однако, как только оба загружаются одновременно, второй будет переопределять PersistenceUnit
первого и, таким образом, создать IllegalArgumentException : Not an entity
для всех объектов из первого. Если у обоих проектов есть другая единица персистентности, загрузка веб-приложения вызовет еще одно исключение, говорящее, что no single default persistence unit
определено.
Итак, как я могу получить все аннотированные классы @Entity
для загрузки в моем веб-приложении без необходимости их определения внутри persistence.xml
(например, здесь), а скорее через проверку компонентов?
Это кажется идеей, хотя я не знаю, как ее использовать и проверять...
Мне кажется, нам нужно объединить все PersistenceUnits внутри веб-приложения или загрузить все Entities программно. Определение их жестко закодированных внутри persistence.xml не является для нас вариантом.