Как автоматически определять сущности с помощью openJPA? - PullRequest
2 голосов
/ 20 июня 2010

Я ищу обнаружение сущности в OpenJPA. Что мне не нужно объявлять все сущности в файле persistence.xml.

Редактировать: Извините, я забыл сказать, что я разрабатываю приложение Java.

Ответы [ 3 ]

4 голосов
/ 21 июня 2010

Прочитайте раздел Список постоянных классов в руководстве пользователя.

В отличие от многих продуктов ORM, OpenJPA не нужно знать обо всех ваших постоянных классах при запуске.OpenJPA автоматически обнаруживает новые постоянные классы, когда они загружаются в JVM;на самом деле вы можете вводить новые постоянные классы в запущенные приложения под OpenJPA.

  • Примечание: есть несколько ограничений, которые описаны в руководстве пользователя, но я оставил их, чтобы кратко оставить этот пост,
3 голосов
/ 20 июня 2010

Согласно спецификации JPA, вы должны явно перечислить все классы в среде Java SE:

6.2.1.6 файл сопоставления, файл jar, класс, exclude-unlisted-classes

(...)

Список именованных управляемых персистентностей классы также могут быть указаны вместо или в дополнение к файлам JAR и сопоставление файлов. Любое отображение аннотации метаданных, найденные на этих классы будут обработаны, или они будет отображаться с помощью сопоставления аннотации по умолчанию. Элемент класса используется для перечисления управляемой персистентности учебный класс. Список всех имен управляемых классы постоянства должны быть указаны в средах Java SE, чтобы застраховать портативность. Portable Java SE приложения не должны полагаться на другие механизмы, описанные здесь, чтобы указать управляемое постоянство классы единицы сохраняемости. Постоянные поставщики могут также потребовать что набор классов сущностей и классы, которыми нужно управлять, должны быть полностью перечислены в каждом из persistence.xml файлов в Java SE окружающая среда.

Все классы, содержащиеся в корне блок персистентности также ищется для аннотированной управляемой настойчивости классы и любые метаданные отображения найденные на них аннотации будут обработано, или они будут отображены используя отображение аннотаций по умолчанию. Если не предполагается, что аннотированные классы постоянства содержится в корне блок персистентности будет включен в единица сохранения, exclude-unlisted-classes элемент должен быть использован. exclude-unlisted-classes элемент не предназначен для использования в Java SE окружающая среда.

Теперь, если вы не против переносимости, вы можете использовать расширение провайдера, но я не могу найти что-то похожее на свойство hibernate.archive.autodetection Hibernate в OpenJPA.

Использование Spring * JPA-интеграция (что позволяет более гибко сканировать путь к классам) - еще один вариант.

0 голосов
/ 19 ноября 2017

Существует также плагин JPA, который может сделать это за вас.Последняя версия недоступна в Maven Central, поэтому вам придется клонировать и собрать самостоятельно.

JPA-Plugin

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