Доступны ли аннотации на уровне пакетов в EJB3 для сопоставления сущностей в JPA / Hibernate? - PullRequest
1 голос
/ 13 февраля 2010

Проблема:

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

Они оба имеют доступ к одной и той же базе данных, но в разных схемах и с разными пользователями / грантами. Тем не менее, оба имеют по крайней мере грант «SELECT» для общих таблиц.

Я нашел три возможности интегрировать их в файл persistence.xml для конкретного проекта:

  1. Перечислите каждую отдельную сущность из Базового проекта, используя теги в файле persistence.xml для конкретного проекта. Недостаток: каждый раз, когда появляется новая сущность, она должна быть добавлена ​​в конкретный проект, чтобы быть видимой

  2. Добавьте файл базового проекта «.jar», используя тег в файле persistence.xml конкретного проекта. Недостаток: это должен быть реальный путь к файлу jar, который может измениться;

  3. (пока ЛУЧШЕЕ) Добавьте ПАКЕТ сущностей базового проекта в файл persistence.xml, используя тег , как описано в Документация по настройке Hibernate entityManager . Недостаток: приходится использовать аннотации уровня пакета через файл package-info.java, который я нигде не могу найти, как это сделать.

Вопрос:

Кто-нибудь знает, действительно ли возможно использовать аннотацию уровня пакета для обозначения пакета сущности в файле persistence.xml?

В документации Hibernate говорится, что это можно сделать, но не говорится, как:

класс

Элемент class определяет полное имя класса, которое вы будет карта. По умолчанию все правильно аннотированные классы и все hbm.xml внутри архива находятся файлы добавлен в единицу сохраняемости конфигурации. Вы можете добавить некоторые внешняя сущность через класс элемент хотя. Как продолжение к спецификация, вы можете добавить пакет имя в элементе (например, org.hibernate.eg). Внимание, пакет будет включать метаданные, определенные на уровне пакета (т.е. в package-info.java), он не будет включить все классы данного пакет.

1 Ответ

0 голосов
/ 13 февраля 2010

Как указано в этом отчете об ошибке , он работает правильно. Если вам нужен пример package-info.java, вы можете взглянуть на это сообщение о спящем форуме .

Примечание: Эта функциональность не является частью спецификации, как описано в XML-схеме persistence .

      <xsd:element name="class" type="xsd:string" 
                   minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            Class to scan for annotations.  It should be annotated 
            with either @Entity, @Embeddable or @MappedSuperclass.

          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...