Есть ли способ определить именованные запросы не в классах сущностей и не в package-info.java?

Есть ли способ зарегистрировать в Hibernate именованные запросы, которые не находятся в классах сущностей или package-info.java?

На данный момент мои именованные запросы определяются с помощью аннотаций org.hibernate.annotations.NamedQuery, обернутых в aorg.hibernate.annotations.NamedQueries в классах package-info.java, но когда запрос определяется в классе обслуживания, который не является сущностью, он должен иметь область действия public или быть пакетным. частные (не явные, если переменная не имеет модификатора), чтобы быть видимыми в вышеупомянутых аннотациях, поскольку они существуют в другом классе. Я хотел бы узнать, можно ли сократить объем запросов до одного класса (сделав их private) путем определения и регистрации их в Hibernate в том же классе.


person Pavel    schedule 04.08.2017    source источник


Ответы (1)


Используйте Java Persistence API (JPA), который представляет собой спецификацию Java для доступа, сохранения и управления данными между объектами/классами Java и реляционной базой данных.

Классы, упомянутые в файлах сопоставления, а также аннотированные классы в JAR-файле, содержащем файл persistence.xml (если он упакован), регистрируются автоматически. Если приложение еще не упаковано в JAR, ObjectDB (как расширение) автоматически регистрирует классы в корневом каталоге пути к классам, который содержит файл META-INF/persistence.xml. Другие классы должны быть зарегистрированы явно с использованием элементов класса (для регистрации одного класса) или элементов jar-файла (для регистрации всех классов в файле jar).

person Tehmina    schedule 04.08.2017
comment
Уважаемый Tehima, если вы копируете/вставляете данные с других сайтов (objectdb.com/java/ jpa/entity/persistence-unit), вам нужно указать автора/источник (так же, как в диссертации: D) - person Jan B.; 04.08.2017
comment
Кстати, вы так и не ответили на его вопрос. Речь идет об именованных запросах. - person Jan B.; 04.08.2017
comment
@Matt Я думаю, вам следует снова прочитать вопрос, а затем прочитать ресурс, а не вставлять сюда. Таким образом, вы лучше поймете, как запросы имен регистрируются вне класса/пакета. - person Tehmina; 04.08.2017
comment
Да, и я до сих пор убежден, что ваш ответ не имеет ничего общего с вопросом. Например, ваше первое предложение использовать JPA бессмысленно, поскольку он уже это делает, поскольку Hibernate является реализацией JPA. Вы узнали три голоса против вашего ответа? - person Jan B.; 04.08.2017