IntelliJ IDEA 在 JPQL 中使用“无法解析符号”突出显示 @Entity 类名称

问题描述 投票:0回答:9

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
9个回答
60
投票

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


25
投票

确保您在 IntelliJ IDEA 中为您的模块配置了JPAHibernate 方面configured


4
投票

如果您将 Spring Boot 与 maven 一起使用,请在您的

pom.xml
文件中添加此依赖项。

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

3
投票

文件 -> 项目结构

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

在同一对话框的底部,在“默认 JPA 提供程序”处,选择 - “休眠”,按“确定”

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

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


2
投票

你会错过这个依赖 - Spring data JPA 这个用于 Maven 项目

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

在依赖项部分下的 POM 中添加这个 然后在 @Entity 上使用 ctrl+click

导入它

导入javax.persistence.Entity;

对于Gradle遵循相同的并使用

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

在 build.gradle 文件中的 dependencies 下


1
投票

我遇到了与 OP 相同的症状(IntelliJ 突出显示 JPQL 中的实体,错误为“无法解析符号”)但解决方案结果是使 IntelliJ 缓存无效并重新启动 IDE。


0
投票

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


0
投票

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


0
投票

我在 pom.xml 中有正确的 spring-boot-starter-data-jpa 依赖,对我来说这修复了它:

  1. 右键单击您的项目 -> Maven -> 重新加载项目

这也为我修复了错误:“无法解析符号‘查询’”

© www.soinside.com 2019 - 2024. All rights reserved.