Почему запрос Hibernate имеет ошибку компиляции в IntelliJ? - PullRequest
16 голосов
/ 03 февраля 2010

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

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

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

Но в IntelliJ я получаю сообщение об ошибке:

Не могу разрешить выражение, не могу разрешить символ «MyTable»

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

Ответы [ 4 ]

22 голосов
/ 04 мая 2014

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

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

18 голосов
/ 03 февраля 2010

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

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

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

17 голосов
/ 31 марта 2014

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

4 голосов
/ 16 февраля 2014

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

...