Почему запрос Hibernate компилирует ошибку в IntelliJ?

У меня есть этот Hibernate-код:

Query q = session.createQuery("from MyTable where status = :status");

Он компилируется и отлично работает.

Но в IntelliJ я получаю эту ошибку:

Невозможно разрешить выражение, Can not разрешить символ "MyTable"

Почему IntelliJ жалуется?

Ответы

Ответ 1

IntelliJ пытается проверить ваш запрос HQL внутри самой строки. Для этого вам нужно настроить, чтобы узнать о вашей конфигурации спящего режима, чтобы гарантировать, что отображение существует для MyTable (оно выполняется во время выполнения, как вы знаете, - как оно выполняется!).

Ознакомьтесь с разделом конфигурации hibernate в intelliJ для вашего проекта.

Вероятно, есть способ отключить его, если это больше помехи, чем помощь.

Ответ 2

Добавьте фасет "Hibernate" в разделе "Структура проекта", затем для этого Facet выберите файл "hibernate.cfg.xml" для "Конфигурация спящего режима". Это позволит IDEA узнать о вашем классе для сопоставления таблиц и поможет распознать эти классы в запросах HQL.

Если вы не используете "hibernate.cfg.xml", например, для Spring, вы можете просто использовать "applicationContext.xml" для инициализации своего источника данных, если объявить Hibernate Facet достаточно.

Ответ 3

Убедитесь, что вы правильно настроили свои грани. Я получал ошибки в моих комментариях Spring Data JPA @Query "Не удается разрешить символ" (только внутри IntelliJ IDEA, сам код работал нормально, когда я его запускал), и мне нужно было перейти в структуру проекта, грани и добавить фасет JPA. (Я предполагаю, что если вы используете Hibernate без JPA, тогда просто добавить фасет Hibernate, а не фасет JPA.)

Ответ 4

В IntelliJ IDEA 13 для Mac OS X Я мог найти этот вариант как "Проверка запросов" в разделе "Проблемы JPA"