티스토리 뷰
Java/JPA, QueryDSL
[QueryDSL] Q클래스 생성하기 : annotationProcessor 방식 (feat.intelliJ)
종벌🍀 2023. 2. 2. 17:30반응형
지난번 STS (이클립스) 에서 QueryDSL을 설정했었다.
[SpringBoot] QueryDSL Q클래스 생성하기 : 플러그인 방식 (feat.STS)
이번에 인텔리J로 같은 프로젝트 import 해서 진행하다보니 gradle 설정을 약간 조정해줘야 했다.
그래서 간단히 그 부분만 작성하도록 한다.
위 링크에 있는 이클립스 설정대로 IntelliJ 에서 해보니 문제는 없었으나,
과거 플러그인 방식이다 보니 intelliJ 가 버전 업 될 수록 문제가 되는 것을 확인하였습니다.
그래서 아래와 같이 Annotation Processor 방식으로 하는게 맞는 것 같습니다.
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.5'
id 'io.spring.dependency-management' version '1.1.0'
}
...
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
## queryDSL 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
compileOnly 'org.projectlombok:lombok'
testImplementation 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
...
## clean 시 해당 위치 삭제
clean {
delete file(querydslDir)
}
Refresh gradle 후에
gradle build 를 실행한다.
Q클래스가 generated 폴더안에 생성되어 있는 것을 볼 수 있다. (IntelliJ IDEA 방식일때)
생성된 QUser 클래스
이제 queryDSL 구문 작성하여 테스트 해보면 db 데이터 잘 조회해오는 것을 볼 수 있다.
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QUser extends EntityPathBase<User> {
private static final long serialVersionUID = 1610787958L;
public static final QUser user = new QUser("user");
public final NumberPath<Integer> userAge = createNumber("userAge", Integer.class);
public final StringPath userEmail = createString("userEmail");
public final StringPath userName = createString("userName");
public QUser(String variable) {
super(User.class, forVariable(variable));
}
public QUser(Path<? extends User> path) {
super(path.getType(), path.getMetadata());
}
public QUser(PathMetadata metadata) {
super(User.class, metadata);
}
}
뭔가 위치가 올바르게 생성되지 않는다면 인텔리J 셋팅에서
enable annotation processing 체크해주고
소스디렉토리가 올바르게 generated 명으로 되어있는지 확인!
저는 현재 아래와 같은 설정하여 더 이상 QClass 생성에 관련한 오류를 마주하고 있지 않습니다.
참고하시면 좋을 것 같습니다.
반응형
'Java > JPA, QueryDSL' 카테고리의 다른 글
[QueryDSL] Q클래스, cannot find symbol error (feat.intelliJ) (0) | 2023.05.15 |
---|---|
[JPA] 복합키 연관관계 맵핑하기 (feat.@Embeddable) (0) | 2023.02.23 |
[QueryDSL] Q클래스 빌드오류 해결 (feat.intelliJ) (0) | 2023.02.16 |
[QueryDSL] Q클래스 생성하기 : 플러그인 방식(feat.STS/eclipse) (0) | 2022.12.29 |
[JPA] Entity Table 명 대소문자 (feat.postgresql) (0) | 2022.12.29 |
댓글