Spring

[QueryDSL 오류]Springboot 3.0이상에서 QueryDslConfig Cannot resolve constructor 'JPAQueryFactory(EntityManager)'

곽코딩루카 2025. 2. 21. 11:03
반응형

발생 상황

  • Springboot 3.0 에서 QueryDSL을 위해 build.gradle과 queryDsl configuration을 다음과 같이 설정했을 때 `JPAQueryFactory` 생성자를 찾을 수 없는 에러가 발생합니다.
dependencies {
		implementation "com.querydsl:querydsl-jpa:5.0.0"
    annotationProcessor(
            "javax.persistence:javax.persistence-api",
            "javax.annotation:javax.annotation-api",
            "com.querydsl:querydsl-apt:5.0.0:jpa"
    )
}
import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QueryDslConfig {

    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }
}
  • 오류 메시지
Cannot resolve constructor 'JPAQueryFactory(EntityManager)'

 

발생 원인

  • Springboot 3.0에서는 `javax`를 사용하지 않습니다. `jakarta EE`로 전환되었기 때문입니다.
  • 다음의 링크를 읽고 학습하였습니다.

대처

  • 따라서 다음과 같이 작성하면 `jakara` 에서 class를 주입받을 수 있게 됩니다.
dependencies {
	// querydsl
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

Refs.

https://new-pow.tistory.com/75

반응형