Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IntelliJ IDEA can't resolve entity in spring data jpa @query annotation

Tags:

Here is my repository interface:

public interface ContentRepository extends JpaRepository<Content, Long> {      @Query(value = "select c from Content c where c.ContentCategory.genre =  :genre and c.ContentType.genre = :contentType")     Iterable<Content> findByTypeAndCategory(@Param("contentType") String contentType, @Param("genre") String genre);  } 

And Here is Content POJO:

@Entity @Table(name = "content") public class Content implements Serializable {  public Content() { }  @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id;  @ManyToOne private ContentCategory contentCategory;  @ManyToOne private ContentType contentType;  // other methods } 

And here my applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns:tx="http://www.springframework.org/schema/tx"        xmlns:jpa="http://www.springframework.org/schema/data/jpa"        xmlns:context="http://www.springframework.org/schema/context"        xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx.xsd         http://www.springframework.org/schema/data/jpa        http://www.springframework.org/schema/data/jpa/spring-jpa.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd">  <tx:annotation-driven/> <context:component-scan base-package="com.aa.bb"/> <jpa:repositories base-package="com.aa.bb.repository"/>   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>     <property name="url" value="jdbc:mysql://localhost:3306/test1"/>     <property name="username" value="root"/>     <property name="password" value="2323"/> </bean>  <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">     <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean>  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">     <property name="dataSource" ref="dataSource"/>     <property name="packagesToScan" value="com.tarameshgroup.derakht.repository"/>      <property name="jpaVendorAdapter">         <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">             <property name="database" value="MYSQL"/>             <property name="showSql" value="true"/>         </bean>     </property>     <property name="jpaProperties">         <props>             <prop key="hibernate.hbm2ddl.auto">update</prop>         </props>     </property> </bean> 

compiler can't find Content in @Query

like image 848
CVV Avatar asked Dec 09 '15 12:12

CVV


1 Answers

Three problems:

  1. You don't have the JPA facet activated (this is what underlines the Content type in @Query in red)
  2. Your packages are incorrectly set, packageToScan should be set to your entities package
  3. You should reference properties in @Query, not types (I see weird content.ContentCategory.genre in uppercase)

After that, you should see Content type resolved in @Query AND be able to run your query correctly

like image 78
rdlopes Avatar answered Oct 10 '22 17:10

rdlopes