我有这个Hibernate代码:
Query q = session.createQuery("from MyTable where status = :status");
它编译和工作正常..
但是在IntelliJ中我报告了这个错误:
无法解析表达式,无法解析符号'MyTable'
为什么IntelliJ会抱怨?
在"项目结构"下添加"Hibernate"Facet,然后为该Facet选择"Hibernate配置"的"hibernate.cfg.xml"文件.这将让IDEA了解您的类到表映射,并将帮助它识别HQL查询中的这些类.
如果您不使用"hibernate.cfg.xml",例如对于Spring,您可以使用"applicationContext.xml"来初始化您的数据源,声明Hibernate Facet就足够了.
IntelliJ正在尝试在字符串本身内验证您的HQL查询.要做到这一点,需要配置它以了解你的hibernate配置,以确保MyTable存在一个映射(它在运行时,如你所知 - 在执行时!).
查看项目的intelliJ中的hibernate配置部分.
如果它更多的是障碍而不是帮助,那么可能有一种方法可以将其关闭.
确保正确配置了Facets.我的Spring Data JPA @Query注释中出现了"无法解析符号"的错误(仅在IntelliJ IDEA中;代码本身在运行时工作正常)我需要进入Project Structure,Facets并添加JPA面.(我假设一个人在没有JPA的情况下使用Hibernate,那么就可以添加Hibernate方面而不是JPA方面.)
在Mac OS XI的IntelliJ IDEA 13中,可以在“ JPA问题”下找到此选项作为“查询语言检查”。