Получение «названного запроса не найдено» с весенним каркасом
-
01-10-2019 - |
Вопрос
У меня есть класс Java (сущность) с набором названных запросов. Когда весна пытается ввести связанную сопутствующую фаю, не находит один из запросов.
Как пример:
@NamedQueries({
@NamedQuery(name = "Query1", query = "..."),
@NamedQuery(name = "Query2", query = "..."),
@NamedQuery(name = "Query3", query = "..."),
@NamedQuery(name = "Query4", query = "..."),
@NamedQuery(name = "Query5", query = "...")
})
Когда весна пытается ввести боб, я получаю:
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'myBean': Injection of resource methods failed;nested exception is
java.lang.IllegalArgumentException: Named query not found: Query3 at ...
Я уверен, что запросы верны (все тесты подразделений для них проходят).
Кто-нибудь знает корневой причиной для этого?
Решение 2
Ну, у меня есть ошибка. Что происходит следующее:
В моем классе был один метод, аннотированный с @Resource, который назывался названный запрос, объявленный в другом классе, аннотированном с @Entity).
Итак, когда пружинные впрыскивают и управляют методом, он пытается использовать названный запрос. Тем не менее, запрос не является «готовым», который будет использоваться, и исключение, которое заброшено в том, что запрос не найден.
Чтобы решить это, я должен запустить другой метод, вызываемый, когда заканчиваются пружинные инъекции, т. Е. Мой класс должен реализовать интерфейс org.springframework.context.Appliclistener и метод breaPlicationevent ждет aRg.springframework.context.event. ContextrefreshedEvent событие.
Это все ребята. Спасибо Божо за вашу помощь.
Другие советы
Убедитесь, что ваша организация была отображена / отсканирована. Это аннотируется с
@Entity
, это добавляется вpersistence.xml
или соответствующему конфигурации провайдера, или он автоматически отсканирован.Я бы префикс название класса в запрос - то есть
MyEntity.Query1
,MyEntity.Query1
и т.п.Убедитесь, что нет ошибок развертывания - то есть что ваш запрос правильный