为什么Hibernate查询在IntelliJ中有编译错误?

时间:2010-02-02 22:21:24

标签: hibernate intellij-idea

我有这个Hibernate代码:

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

它编译并正常工作..

但是在IntelliJ中我报告了这个错误:

  

无法解析表达式,不能   解决符号'MyTable'

为什么IntelliJ会抱怨?

4 个答案:

答案 0 :(得分:22)

在“项目结构”下添加“Hibernate”Facet,然后为该Facet选择“Hibernate配置”的“hibernate.cfg.xml”文件。这将让IDEA了解您的类到表映射,并帮助它识别HQL查询中的这些类。

如果您不使用“hibernate.cfg.xml”,例如对于Spring,您可以使用“applicationContext.xml”来初始化您的数据源,声明Hibernate Facet就足够了。

答案 1 :(得分:18)

IntelliJ正在尝试在字符串本身内验证您的HQL查询。要做到这一点,需要配置它以了解你的hibernate配置,以确保MyTable存在一个映射(它在运行时,如你所知 - 在执行时!)。

查看项目的intelliJ中的hibernate配置部分。

如果它更多的是障碍而不是帮助,那么可能有一种方法可以将其关闭。

答案 2 :(得分:17)

确保正确配置了Facets。我的Spring Data JPA @Query注释中出现了“无法解析符号”的错误(仅在IntelliJ IDEA中;代码本身在运行时工作正常)我需要进入Project Structure,Facets并添加JPA面。 (我假设一个人在没有JPA的情况下使用Hibernate,那么就可以添加Hibernate方面而不是JPA方面。)

答案 3 :(得分:4)

在适用于Mac OS X的IntelliJ IDEA 13中,我可以找到此选项 "查询语言检查"在" JPA问题"