【问题标题】:IntelliJ IDEA highlights @Entity class names with "Cannot resolve symbol" in JPQLIntelliJ IDEA 在 JPQL 中用“无法解析符号”突出显示 @Entity 类名
【发布时间】:2012-09-07 09:51:27
【问题描述】:

IntelliJ IDEA 在 JPQL 中用红色“无法解析符号”突出显示持久性 @Entity 类名称,这会分散注意力并掩盖实际问题。

因此,例如,我在我的存储库中声明一个查询:

private static final String READ_BY_CANDIDATE_KEY = "SELECT cr FROM Entity AS cr left join cr.relationship AS re left join fetch cr.relationship2 WHERE re.candidateKey=:ID";

.. 和“Entity”带有下划线,即使“Entity”是一个有效的类名,并且有 @Entity 注释。代码实际运行时,没有问题。

我想需要进行某种配置才能让 IDE 知道哪些类是有效的?那个配置是​​怎么做的?

更新:我确实有一个 JPA 方面,但它没有看到带注释的类。它似乎需要一个 persistence.xml 或 orm.xml(我的项目没有使用)

【问题讨论】:

    标签: jpa intellij-idea annotations jpql


    【解决方案1】:

    确保您的模块在 IntelliJ IDEA 中有 JPAHibernate facet configured

    【讨论】:

    • 你在使用 Spring 吗?如果是这样,则需要 Spring facet。
    • 您能否提供有关如何执行上述操作的说明?
    • 如果您使用 Spring 作为您的 JPA 配置(没有 persistence.xml),只需创建一个 JPA facet 并设置默认的 JPA Provider。无需指定 xml 文件。
    • 您还必须右键单击“持久性”菜单中的根项目并点击“分配数据源...”,然后选择您的数据库,您应该一切就绪
    • @Amalgovinus 对于 Spring Boot 应用程序,没有什么可供选择的。即使您手动创建 JPA 和/或 Hibernate 构面,列表仍为空。
    【解决方案2】:

    您似乎没有在构面配置中选择默认的 JPA 提供程序。根据您使用的提供商,从列表中选择一个。可用选项包括 EclipseLink、Hibernate、OpenJPA、TopLink

    【讨论】:

    • 我在哪里设置呢?
    • 转到文件 > 项目结构 > 方面。然后单击 + 图标并将 JPA 添加到您的项目/模块中。完成此操作后,您可以选择默认 JPA 提供程序。
    【解决方案3】:

    文件 -> 项目结构

    在左侧窗格中选择“构面”。如果没有列出 JPA,请单击“+”号并添加“JPA”

    在同一对话框的底部,在“Default JPA Provider”中,选择 - “Hibernate”,按“OK”

    如果@Table注解有错误,配置并选择数据源

    现在选择的表名应该被识别为实体类名

    【讨论】:

      【解决方案4】:

      如果您使用的是 Spring-boot,请尝试添加此依赖项。
      spring-boot-starter-data-jpa

      【讨论】:

        【解决方案5】:

        如果您使用 Spring Boot 和 maven,请在您的 pom.xml 文件中添加此依赖项。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        

        【讨论】:

          【解决方案6】:

          有时 JPA Buddy 插件会阻止 springboot JPA 配置。确保这不是导致问题的原因。

          【讨论】:

          • 我是 JPA Buddy 开发团队的负责人。所以,我想知道你提到了什么案例?因为我们从来没有遇到过这样的事情,甚至没有接触过配置部分......请您提供更多信息,以便我们可以解决如果存在的问题。
          猜你喜欢
          • 1970-01-01
          • 2019-02-21
          • 1970-01-01
          • 1970-01-01
          • 2015-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多