当前位置:  开发笔记 > Android > 正文

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

如何解决《为什么Hibernate查询在IntelliJ中有编译错误?》经验,为你挑选了4个好方法。

我有这个Hibernate代码:

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

它编译和工作正常..

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

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

为什么IntelliJ会抱怨?



1> tumanov..:

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

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


请注意,如果使用xml映射,则此答案优先于关闭检查.这是一个简单的设置,它可以帮助很多.

2> Michael Neal..:

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

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

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


@Marcus thx 4这个线索!在IDEA13中,我认为此设置已被移动/重命名,但在"设置" - >"检查"对话框的搜索框中键入"query"会在JPA问题下显示它...
谢谢.它实际上是Java EE问题\持久性QL问题下的一个设置.把它关了,我很好.

3> 小智..:

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



4> Bram Luyten..:

在Mac OS XI的IntelliJ IDEA 13中,可以在“ JPA问题”下找到此选项作为“查询语言检查”。

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有