querydsl 처음 설정 후 테스트코드 돌려보는데 오류 원인을 모르겠어요
738
작성한 질문수 3
JPAQueryFactory queryFactory = new JPAQueryFactory(em);부분에서
Cannot resolve constructor 'JPAQueryFactory(EntityManager)'
오류가 생기는데 원인을 모르겠어요
아래는 현재 설정입니다.
스프링 생성

build.gradle 소스
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.5'
id 'io.spring.dependency-management' version '1.1.6'
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
group = 'study'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
//querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jpa'
implementation 'mysql:mysql-connector-java:8.0.33' // MySQL 드라이버 최신 버전 사용
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' // 쿼리 파라미터 로그 표시 (성능에 영향을 줄 수 있음)
// runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝
테스트코드
package study.querydsl;
import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
import study.querydsl.entity.Hello;
@SpringBootTest
@Transactional
class QuerydslApplicationTests {
@Autowired
EntityManager em;
@Test
void contextLoads() {
Hello hello = new Hello();
em.persist(hello);
JPAQueryFactory queryFactory = new JPAQueryFactory(em);
// QueryDSL 쿼리 테스트
}
}
답변 2
0
안녕하세요. 테렌테렌님
도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.
실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 문제 영역을 실행할 수 있는 방법
2. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함)
링크: 공식 서포터즈
링크: 자주하는 질문
감사합니다.
0
안녕하세요, 테렌테렌님, 인프런 AI 인턴입니다.
현재 JPAQueryFactory 생성자에서 발생하는 오류는 com.querydsl.jpa.impl.JPAQueryFactory 클래스에서 EntityManager 타입을 파라미터로 받는 생성자가 정의되어 있지 않음을 의미합니다. 이는 주로 라이브러리 버전 호환성 문제나 설정 상의 문제에서 기인할 수 있습니다. 해결을 위해 아래 몇 가지 점을 확인해 보세요.
1. QueryDSL 관련 의존성 확인
querydsl-jpa 의존성은 올바른 버전을 사용하셔야 합니다. 최신 버전 사용 시 가끔 문제가 발생할 수 있으니, 현재의 QueryDSL 버전을 확인 후 이슈가 있다면 버전 변경을 시도해볼 수 있습니다.
// QueryDSL 추가 의존성 예시
implementation 'com.querydsl:querydsl-jpa:5.0.0'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jpa'
2. Annotation Processor 설정
정상적으로 작동하기 위해서는 annotationProcessor 설정이 제대로 되어 있어야 합니다. 현재 설정은 아래와 같이 보이며, 문제는 없어 보입니다만, 문제가 지속될 경우 annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"를 재확인해주세요.
3. 프로젝트 캐시 비우기
JPAQueryFactory 클래스가 제대로 적용되지 않는 경우, 프로젝트 캐시 관련 문제일 수 있습니다. 인텔리제이에서는 File -> Invalidate Caches / Restart를 통해 캐시를 비우고 다시 빌드 해보세요.
4. 의존성 추가 및 테스트
querydsl-jpa의 다른 버전도 테스트해 보세요. 예:5.0.0 -> 4.4.0
추가 링크 참고
현재 상황과 유사한 질문 및 해결 방법을 다룬 링크도 도움이 될 수 있습니다:
- QueryDSL 설정 관련 질문
- Spring Boot 및 QueryDSL 관련 설정 문제 해결
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
SpringBoot 4.X에서의 Querydsl 설정
0
95
2
querydsl 오픈소스에 대한 질문
0
75
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
111
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
321
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
71
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
161
1
querydsl sum() 메서드 없어요.
0
160
2
build 디렉터리 생성
0
140
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
114
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
93
1
오타 제보 드립니다.
0
73
2
벌크 연산과 flush, clear
0
76
1
Run As Intellij 로 변경시 Q타입 import 불가
0
89
1
QHello import하기 문제 발생
0
147
2
등록된 함수 보는법(H2Dialect) 질문
0
69
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
199
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
202
1
querydsl 설정 문제
0
222
2
quey dsl 설정부분
0
158
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
89
1
답변부탁드리겠습니다.
0
90
2
(OrderSpecifier)관련 내용 어디있을가요
0
66
1
중급문법 벌크연산에서
0
83
2





