티스토리 뷰

반응형

JPAQueryFactory 를 import 하면서 발생한 오류입니다. 이는 주로 IntelliJ 에서 발생하는 오류인데 @SpringBootApplication 에 scanBasePackages 설정을 해주면 해준다고 나와있습니다. 우선 예시를 보겠습니다.

 

@Repository
public class ACustomRepositoryImpl extends QuerydslRepositorySupport implements ACustomRepository {

    private JPAQueryFactory queryFactory;

    public ACustomRepositoryImpl(JPAQueryFactory queryFactory) {
        super(A.class);
        this.queryFactory = queryFactory;
    }

}

 

이렇게 작성을 하여 생성자를 만들었지만, 아래와 같이 지속적으로 에러가 발생하며 앱이 켜지지 않고 있었습니다. 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.estate.appadmin.domain.account.repository.ACustomRepositoryImpl required a bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' that could not be found.

 

그래서 시도한 방법은 아래와 같습니다.

1. SpringBootApplication 에 추가하기

@SpringBootApplication(scanBasePackages = {"com.package.name"})
public class MainApplication {
    ... 
}

scanBasePackages 를 추가하고 실행해봅니다.

 

2. @Service, @Repository 등의 어노테이션 확인하기

각각의 Impl 클래스들에 어노테이션이 붙어있지 않아 스프링 자체적으로 발생한 오류일 수 있습니다.

 

3. IntelliJ 오류

인텔리제이 내에서 종종 발생하는 오류라고 하는데 Files - Invalidate Caches 를 한번 실행해줍니다. 

 

4. JPAConfig 파일 생성하기

최종적으로 아래의 환경 설정 파일을 생성하지 않아서 발생한 에러로 판명이 되었습니다. 아래의 파일은 EntityManager를 설정해주는 소스입니다. 

@Configuration
@EnableJpaAuditing
@EnableJpaRepositories(basePackages = "com.package.name")
public class JPAConfig {

    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory queryFactory() {
        return new JPAQueryFactory(entityManager);
    }

}
반응형
댓글
공지사항