Почему запрос 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"