Получение 'Именованного запроса, не найденного' с платформой Spring

У меня есть класс Java (Объект) с рядом именованных запросов. Когда Spring пытается ввести связанный боб, он не находит один из запросов.

Как пример:

@NamedQueries({
        @NamedQuery(name = "Query1", query = "..."),
        @NamedQuery(name = "Query2", query = "..."),
        @NamedQuery(name = "Query3", query = "..."),
        @NamedQuery(name = "Query4", query = "..."),
        @NamedQuery(name = "Query5", query = "...")
})

Когда Spring пытается ввести боб, я добираюсь:

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 ...

Я уверен, что запросы корректны (все модульные тесты на них являются передающими).

Кто-либо знает первопричину для него?

5
задан Felipe Arenales 1 July 2010 в 13:55
поделиться

2 ответа

Что ж, я понял ошибку. Произошло следующее:

В моем классе был один метод, аннотированный @Resource, который вызывал именованный запрос, объявленный в другом классе, аннотированном @Entity).

Итак, когда Spring внедряет и запускает метод, он пытается использовать именованный запрос. Однако запрос не «готов» к использованию, и создается исключение, что запрос не найден.

Чтобы решить эту проблему, мне нужно запустить другой метод, вызываемый после завершения инъекций Spring, т.е. мой класс должен реализовать интерфейс org.springframework.context.ApplicationListener, а метод onApplicationEvent ожидает org.springframework.context .event.ContextRefreshedEvent событие.

Это все, ребята. Спасибо Божо за помощь.

2
ответ дан 14 December 2019 в 08:40
поделиться
  • убедитесь, что ваш объект был нанесен на карту / сканирован. Аннотируется ли он @Entity , добавляется ли он в persistence.xml или в соответствующую конфигурацию поставщика, или он автоматически сканируется.

  • Я бы поставил перед запросом префикс имени класса - например, MyEntity.Query1 , MyEntity.Query1 и т. Д.

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

5
ответ дан 14 December 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: