Проблема:
У меня есть два взаимодополняющих проекта: базовый (базовый проект) с общими объектами и конкретный (конкретный проект), который должен запрашивать объекты из первого проекта.
Они оба получают доступ к одной и той же базе данных, но по разным схемам и с разными пользователями/грантами. Тем не менее, у обоих есть как минимум грант SELECT для общих таблиц.
Я нашел три возможности интегрировать их в файл persistence.xml для конкретного проекта:
Перечислите каждую отдельную сущность из базового проекта, используя теги ‹class› в файле persistence.xml конкретного проекта. Недостаток: каждый раз, когда появляется новая сущность, ее нужно добавлять в конкретный проект, чтобы она была видна.
Добавьте файл «.jar» базового проекта, используя тег ‹jar-file› в файле persistence.xml конкретного проекта. Недостаток: это должен быть реальный путь к файлу jar, который может измениться;
(ЛУЧШЕЕ на данный момент) Добавьте ПАКЕТ сущностей базового проекта в файл persistence.xml, используя тег ‹class›, как описано в документация по установке Hibernate entityManager. Недостаток: нужно использовать аннотации уровня пакета через файл package-info.java, который я нигде не могу найти, как это сделать.
Вопрос:
Кто-нибудь знает, действительно ли можно использовать аннотацию уровня пакета для обозначения пакета сущностей в файле persistence.xml?
В документации Hibernate указано, что это можно сделать, но не сказано, как:
класс
Элемент класса указывает полное имя класса, которое вы будете отображать. По умолчанию все правильно аннотированные классы и все файлы hbm.xml, найденные внутри архива, добавляются в конфигурацию модуля сохраняемости. Однако вы можете добавить некоторую внешнюю сущность через элемент класса. В качестве расширения спецификации вы можете добавить в элемент имя пакета (например, org.hibernate.eg). Внимание, пакет будет включать метаданные, определенные на уровне пакета (т.е. в package-info.java), он не будет включать все классы данного пакета.