'IntelliJ IDEA highlights @Entity class names with "Cannot resolve symbol" in JPQL
IntelliJ IDEA highlights persistent @Entity class names with "Cannot resolve symbol" in red in JPQL which is distracting and buries real issues.
So, for example, I declare a query in my repository:
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";
.. and "Entity" is underlined, even though "Entity" is a valid class name, and has the @Entity annotation. When the code actually runs, there are no problems.
I imagine some sort of configuration is required to let the IDE know what classes are valid? How is that configuration done?
Update: I do have a JPA facet, but it doesn't see the annotated classes. It seems to require a persistence.xml or orm.xml (which my project does not use)
Solution 1:[1]
Seems like you have not selected the default JPA provider in facet configuration. Depending upon which provider you are using, pick one from the list. Available options are EclipseLink, Hibernate, OpenJPA, TopLink
Solution 2:[2]
Make sure you have JPA or Hibernate facet configured in IntelliJ IDEA for your module.
Solution 3:[3]
File -> Project Structure
At left pane select "Facets". If there is no JPA listed, click "+" sign and add "JPA"
At bottom of same dialog, at "Default JPA Provider", select - "Hibernate", press "OK"
If you have error at @Table annotation, configure and choose data source
Table name for select now should be recognized as entity class name
Solution 4:[4]
If you are using Spring Boot with maven, add this dependency in your pom.xml
file.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Solution 5:[5]
you would have missed this dependency- Spring data JPA This one is for Maven projects
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
add this one in your POM under dependencies section and then use ctrl+click on @Entity to import it from
import javax.persistence.Entity;
for Gradle follow the same and use
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
under dependencies in the build.gradle file
Solution 6:[6]
Try adding this dependency if you are using Spring-boot.
spring-boot-starter-data-jpa
Solution 7:[7]
Sometimes JPA Buddy plugin brakes the springboot JPA configuration. Make sure this is not causing the issue.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | rajnish |
Solution 2 | Prashant |
Solution 3 | GintsGints |
Solution 4 | user3841581 |
Solution 5 | Vignesh Ravichandran |
Solution 6 | Anirudh Khanna |
Solution 7 | Mike Ballesteros |