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

Posted

技术标签:

【中文标题】IntelliJ IDEA 在 JPQL 中用“无法解析符号”突出显示 @Entity 类名【英文标题】:IntelliJ IDEA highlights @Entity class names with "Cannot resolve symbol" in JPQL 【发布时间】: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(我的项目没有使用)

【问题讨论】:

【参考方案1】:

确保您的模块在 IntelliJ IDEA 中有 JPA 或 Hibernate 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 开发团队的负责人。所以,我想知道你提到了什么案例?因为我们从来没有遇到过这样的事情,甚至没有接触过配置部分......请您提供更多信息,以便我们可以解决如果存在的问题。

以上是关于IntelliJ IDEA 在 JPQL 中用“无法解析符号”突出显示 @Entity 类名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式在 Intellij IDEA 中用小写替换大写?

Intellij IDEA

IntelliJ IDEA中用git提交代码时忽略文件的设置

intellij idea中用java打开文件中文怎么变成乱码了?我用的是UTF-8啊

IntelliJ IDEA部署tomcat时Edit Configuration Deployment无artifact选项

Intellij IDEA创建maven项目无java文件问题