【问题标题】:Why does Hibernate query have compile error in IntelliJ?为什么 Hibernate 查询在 IntelliJ 中有编译错误?
【发布时间】:2011-01-12 09:22:36
【问题描述】:

我有这个休眠代码:

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

它编译并且工作正常..

但在 IntelliJ 中我收到此错误报告:

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

为什么 IntelliJ 抱怨?

【问题讨论】:

    标签: java hibernate intellij-idea


    【解决方案1】:

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

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

    【讨论】:

    • 请注意,如果您使用 xml 映射,则此答案优于关闭检查。这是一个简单的设置,它有很大帮助。
    • 谢谢图马诺夫。要使您的答案起作用,还有一个先决条件:需要为您的项目激活插件“Hibernate”。
    • @tumnanov 如果我使用带有嵌入式 DB h2 的 Spring Boot,你能知道该怎么做,它会自动为我配置持久性,在这种情况下,我没有持久性文件或hibernate.cf.xml 在我的目录中
    • 谢谢!这已经解决了这个问题。如前所述,您可以使用 hibernate.cfb.xml 或在 Spring ORM 的情况下使用 application-context.xml
    【解决方案2】:

    IntelliJ 正在尝试在字符串本身内验证您的 HQL 查询。为此,需要将其配置为了解您的休眠配置,以确保 MyTable 存在映射(如您所知,它在运行时执行 - 执行时!)。

    查看您项目的 intelliJ 中的休眠配置部分。

    如果障碍多于帮助,则可能有一种方法可以将其关闭。

    【讨论】:

    • 谢谢。它实际上是 Java EE issues \ Persistence QL Problems 下的一个设置。把它关了,我很好。
    • @Marcus thx 4 这个线索!我认为在 IDEA13 中此设置已被移动/重命名,但在“设置”->“检查”对话框的搜索框中键入 query 会在 JPA 问题下显示它...
    【解决方案3】:

    确保您的构面配置正确。我的 Spring Data JPA @Query 注释中出现“无法解析符号”的错误(就在 IntelliJ IDEA 中;当我运行它时代码本身运行良好),我需要进入项目结构、构面并添加 JPA方面。 (我假设如果有人在没有 JPA 的情况下使用 Hibernate,那么只需添加 Hibernate 方面而不是 JPA 方面。)

    【讨论】:

    • THISSSSSSSSSSSSSSSSSS!对我来说,它似乎通过以下方式起作用:1.使用我的 persistence.xml 文件添加普通的 JPA 方面 2.添加一个没有任何内容的休眠方面(所有这些都在项目设置中 -> 方面)
    【解决方案4】:

    在 Mac OS X 的 IntelliJ IDEA 13 中,我可以找到这个选项 “JPA 问题”下的“查询语言检查”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2014-08-08
      • 2012-12-07
      • 2012-02-08
      • 2016-01-21
      相关资源
      最近更新 更多