해결된 질문
작성
·
441
·
수정됨
2
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 있는데 다 해봐도 안돼요
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네
[질문 내용]
springboot 3버전으로 해결 방법을 다 써봤는데 안되어서 문의드립니다.
setting -> Annotaion Processors
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.4'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'study'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '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'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
tasks.named('test') {
useJUnitPlatform()
}
clean {
delete file('src/main/generated')
}
폴더 확인
bbuild.gradle 설정도 잘해서 build 폴더에 잘 생겼는데 Test에서 import를 못해요
답변 2
0
프로젝트 코드 확인해보았습니다.
설정 적용이 잘 작동하지 않아서 새로 프로젝트를 생성해서 진행하니 잘 되었습니다.
프로젝트 자체에 무언가의 문제가 있는 것 같아요. 따라서 새로 프로젝트를 생성하고 진행해주세요.
프로젝트 새로 생성 (기존과 동일한 패키지 구조)
이전 프로젝트의 코드만 복사하여 추가
Hello클래스
@Entity
@Getter
@Setter
public class Hello {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
}
QuerydslApplicationTests
@SpringBootTest
@Transactional
class QuerydslApplicationTests {
@Autowired
EntityManager em;
@Test
void contextLoads() {
Hello hello = new Hello();
em.persist(hello);
JPAQueryFactory queryFactory = new JPAQueryFactory(em);
}
}
annotation processing 체크
build.gradle 변경
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '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'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//test 롬복 사용
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
tasks.named('test') {
useJUnitPlatform()
}
clean {
delete file('src/main/generated')
}
코드 인식 확인
시도해보시고 안될 경우 댓글 남겨주세요 😀
https://drive.google.com/file/d/1P08b3Zv0VOD2zH5qS5rdZOBEpBKejuUJ/view?usp=sharing
해당 코드로 Q클래스가 인식 가능합니다.
확인해보시겠어요?
0
안녕하세요, 인프런 AI 인턴입니다. 현아님, 스프링 부트 3.x 버전에서 QHello
클래스를 테스트 시 찾지 못하는 문제와 관련하여 말씀드립니다.
현아님의 문제는 Querydsl 설정 과정에서 발생한 것으로 보입니다. QHello
클래스는 Querydsl 라이브러리가 엔티티 클래스를 바탕으로 생성하는 Querydsl Q-타입 클래스입니다. 이 Q-타입 클래스는 타입 안전한 쿼리를 작성할 때 사용됩니다. 이 클래스가 생성되지 않거나, 테스트 코드에서 찾지 못하는 경우는 보통 아래와 같은 원인 때문입니다:
build.gradle
내 Querydsl 관련 설정이 정확하게 이루어졌는지 다시 한 번 확인해야 합니다. 특히, annotationProcessor
경로 설정이 정확한지, 그리고 Querydsl 관련 의존성이 문제 없이 선언되어 있는지 검토가 필요합니다.현아님의 상황에 가장 유사한 답변이 있는 질문 링크를 제공해 드리겠습니다. 이 링크에서는 Querydsl 설정과 관련된 세부 내용과 함께, 유사한 문제를 겪는 다른 수강생들에게 제공된 해결책을 확인하실 수 있습니다:
build.gradle
에 Querydsl 관련 의존성을 추가하는 방법, 그리고 QHello
와 같은 Q-타입 클래스들이 올바르게 생성되고, 테스트에서 인식될 수 있도록 하는 방법이 포함되어 있습니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그 순서대로 해서 QHello.java 까지 생겼는데 똑같습니다 ㅠ