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

时间:2012-09-14 08:47:21

标签: jpa intellij-idea annotations jpql

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

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

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(我的项目不使用)

5 个答案:

答案 0 :(得分:43)

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

答案 1 :(得分:23)

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

答案 2 :(得分:0)

文件->项目结构

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

在同一对话框的底部,在“默认JPA Provider”处,选择-“休眠”,然后按“确定”

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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