QueryDSL을 적용했는데도 Q클래스가 자동생성되지 않았음. (QTodo, QUser 등)
빌드(./gradlew build)를 여러 번 수행해도 build/generated/sources 경로에 Q클래스가 생성되지 않아 QueryDSL 사용 자체가 불가능했음.
build.gradle에 아래처럼 설정했었음.dependencied{
// ...
// 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"
}
generated 폴더에 Q클래스가 생성되지 않았음.QueryDSL 라이브러리의 구조상, apt 모듈은 jpa 모듈의 하위 종속성으로 포함되어 있어 apt와 jpa의 버전이 정확하게 일치하지 않으면 Q클래스가 생성되지 않는 문제가 발생할 수 있음.
즉, QueryDSL은 jpa와 apt의 종속성이 정확히 일치해야 하며, Jakarta 또는 Java EE 버전까지 맞춰야 하는 상황이었음. 버전을 맞추지 않으면 Annotation Processor가 제대로 동작하지 않아 Q클래스가 생성되지 않음.
아래처럼 QueryDSL의 jpa와 apt 종속성을 정확히 맞추고 Jakarta 버전까지 명시적으로 추가.
dependencied{
// ...
// QueryDSL
implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

이후, Gradle을 리프레시하고 다시 빌드하자 (./gradlew clean build) Q클래스가 정상적으로 생성됨을 확인할 수 있었음.

결론적으로 QueryDSL의 jpa와 apt 버전을 완벽히 맞춰주고, 환경(Java EE or Jakarta)을 명확하게 설정하면 Q클래스 생성 문제는 해결됨.