Как мне поместить HQL в сущность?

У меня есть сущность Hibernate, в которую я хотел бы добавить метод. Этот метод вызовет диспетчер сущностей и запустит подготовленный оператор, но я не знаю, как создать экземпляр диспетчера сущностей. Всякий раз, когда я пытаюсь, автоматически подключаю его так:

@Autowired
private transient EntityManager entityManager;

entityManager имеет значение null, когда я запускаю приложение. Автономное подключение работает для всех остальных моих классов. Почему я не могу автоматически подключить entityManager в своей сущности и как мне выполнить свой запрос в Entity?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@Autowired предназначен для beans, классов с @Service или @Component. Классы с пометкой @Configuration также могут использовать @Autowired. Новые экземпляры этих классов создаются и управляются Spring, если вы попытаетесь создать новые экземпляры этих классов, @Autowired там тоже не сработает. Такие как MyClass myClass = new MyClass()

Классы, отмеченные @Entity, не являются управляемыми компонентами, они создаются менеджером сущностей, когда вы запрашиваете их из базы данных, но когда вы создаете новую строку, вы создаете новый экземпляр. Spring не творит им своего волшебства. Вы должны вызывать свою хранимую процедуру из @Service так же, как если бы вы использовали @Repository или диспетчер сущностей для сохранения @Entity.

Мой DAO аннотирован @Component, имеет ли это значение?

user2743227 22.08.2018 05:13

Нет, @Entity не может иметь @Autowired, почему вы не можете поместить вызов хранимой процедуры в @Service?

DCTID 22.08.2018 06:06

Другие вопросы по теме