Получение «названного запроса не найдено» с весенним каркасом

StackOverflow https://stackoverflow.com/questions/3154026

  •  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 и т.п.

  • Убедитесь, что нет ошибок развертывания - то есть что ваш запрос правильный

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top