【发布时间】:2011-01-12 09:22:36
【问题描述】:
我有这个休眠代码:
Query q = session.createQuery("from MyTable where status = :status");
它编译并且工作正常..
但在 IntelliJ 中我收到此错误报告:
无法解析表达式,不能 解析符号'MyTable'
为什么 IntelliJ 抱怨?
【问题讨论】:
标签: java hibernate intellij-idea
我有这个休眠代码:
Query q = session.createQuery("from MyTable where status = :status");
它编译并且工作正常..
但在 IntelliJ 中我收到此错误报告:
无法解析表达式,不能 解析符号'MyTable'
为什么 IntelliJ 抱怨?
【问题讨论】:
标签: java hibernate intellij-idea
在“项目结构”下添加一个“休眠”构面,然后为该构面选择“休眠配置”的“hibernate.cfg.xml”文件。这将使 IDEA 了解您的类到表的映射,并帮助它识别 HQL 查询中的这些类。
如果您不使用“hibernate.cfg.xml”,例如对于 Spring,您可以只使用“applicationContext.xml”来初始化您的数据源,声明 Hibernate Facet 可能就足够了。
【讨论】:
hibernate.cfb.xml 或在 Spring ORM 的情况下使用 application-context.xml
IntelliJ 正在尝试在字符串本身内验证您的 HQL 查询。为此,需要将其配置为了解您的休眠配置,以确保 MyTable 存在映射(如您所知,它在运行时执行 - 执行时!)。
查看您项目的 intelliJ 中的休眠配置部分。
如果障碍多于帮助,则可能有一种方法可以将其关闭。
【讨论】:
query 会在 JPA 问题下显示它...
确保您的构面配置正确。我的 Spring Data JPA @Query 注释中出现“无法解析符号”的错误(就在 IntelliJ IDEA 中;当我运行它时代码本身运行良好),我需要进入项目结构、构面并添加 JPA方面。 (我假设如果有人在没有 JPA 的情况下使用 Hibernate,那么只需添加 Hibernate 方面而不是 JPA 方面。)
【讨论】:
在 Mac OS X 的 IntelliJ IDEA 13 中,我可以找到这个选项 “JPA 问题”下的“查询语言检查”
【讨论】: