Как я могу объединить / расширить единицы персистентности из разных JAR-файлов? - PullRequest
9 голосов
/ 31 июля 2009

Я использую постоянство JPA для своих моделей данных с Eclipselink в качестве поставщика сохраняемости. У меня есть модульное (OSGi) приложение, и один из модулей содержит стандартную модель данных и модуль персистентности, который автоматически включает все объекты из пакета. Поставщик персистентности находится в другом модуле, который хорошо работает.

Теперь я хочу, чтобы третий модуль добавил некоторые сущности в модуль персистентности. Как я могу это сделать? Я нашел это решение , которое кажется специфическим для Spring, который я не использую. Суть этого подхода заключается в написании постпроцессора, который подключается к обработке единицы сохраняемости и вручную объединяет записи <class> из файлов persistence.xml.

Возможно ли объединение единиц персистентности? Кто-нибудь может предложить обходной путь?

Ответы [ 2 ]

5 голосов
/ 07 августа 2009

Во-первых, вот ссылка на Dynamic-JPA , они предлагают способ динамического обновления сущностей. Я бы сначала изучил этот вариант.

<ч /> Вот еще одна ссылка ( PDF ) от OSGi, есть несколько диаграмм верхнего уровня, посвященных постоянству и EntityManagerFactory, которые могут быть полезны.

<ч /> интересный подход , но может не иметь отношения

Вот ссылка на программным путем создания единиц постоянства без использования файла persistence.xml (что вы не можете сделать, но ответы дают некоторое представление о проблеме). Филк предлагает, как удалить провайдера из файла persistence.xml. Если вы будете следовать этому методу, вы сможете объединить свои сущности в определенную единицу персистентности.

"Ну, в старые добрые времена Hibernate я мог просто создать сеанс и добавить мои классы к нему на лету. Кажется, что никогда не превращал это в СОЛНЦЕ JPA спецификации. Однако я полностью удалил провайдера из persistence.xml и передайте его EL, используя свойства EMF. это кажется, работает нормально. Единственное, что осталось в файле persistence.xml - это спецификация классов. Я предполагаю, что это не будет слишком сложно раскрыть метод который анализирует имя класса в EL и создает для него ClassDescriptor в качестве публичного метода поставщика EL JPA. «

<ч />

Наконец, мы подошли к хакерскому решению, которое уже было предложено, просто отредактируйте ваши файлы persistence.xml по факту. Я считаю, что это будет работать (хотя я не пробовал), но это определенно вариант.

0 голосов
/ 26 марта 2014

У меня есть установка, в которой WAR-файл содержит файл persistence.xml. Решение, уже описанное здесь, должно использоваться для JAR, WAR и EAR. JPA 2.0: добавление классов сущностей в PersistenceUnit * из разных jar * автоматически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...