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 提供程序。根据您使用的提供商,从列表中选择一个。可用选项有 EclipseLink、Hibernate、OpenJPA、TopLink
确保您在 IntelliJ IDEA 中为您的模块配置了JPA 或Hibernate 方面configured。
如果您将 Spring Boot 与 maven 一起使用,请在您的
pom.xml
文件中添加此依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
文件 -> 项目结构
在左窗格中选择“Facets”。如果没有列出 JPA,请单击“+”号并添加“JPA”
在同一对话框的底部,在“默认 JPA 提供程序”处,选择 - “休眠”,按“确定”
如果@Table注解出错,配置并选择数据源
现在选择的表名应该被识别为实体类名
你会错过这个依赖 - 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 下
我遇到了与 OP 相同的症状(IntelliJ 突出显示 JPQL 中的实体,错误为“无法解析符号”)但解决方案结果是使 IntelliJ 缓存无效并重新启动 IDE。
如果您使用的是 Spring-boot,请尝试添加此依赖项。
spring-boot-starter-data-jpa
有时 JPA Buddy 插件会破坏 springboot JPA 配置。确保这不是导致问题的原因。