티스토리 뷰

반응형

 

 


지난번 STS (이클립스) 에서 QueryDSL을 설정했었다. 

 

 

[SpringBoot] QueryDSL Q클래스 생성하기 : 플러그인 방식 (feat.STS)

 

[SpringBoot] QueryDSL Q클래스 생성하기(feat.STS)

JPA JPQL 을 사용하던 도중 QueryDSL 로 쿼리를 짜보고 싶어 셋팅해봄. SPRING DATA JPA 레퍼런스에 queryDSL이 언급은 되는데 설정하는 방법 같은 건 딱히 없어서 블로그들 참고하여 셋팅해봄. ​ 먼저 build.

jong-bae.tistory.com

 

 

 

 

이번에 인텔리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 를 실행한다.

 

intelliJ - gradle - build

 

 

Q클래스가 generated 폴더안에 생성되어 있는 것을 볼 수 있다. (IntelliJ IDEA 방식일때)

 

 

generated 폴더 생성

 

 

 

생성된 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 명으로 되어있는지 확인!

 

File - Settings - Build - Compiler - Annotation Processors

 

 

 

 

 

 

 

 


 

저는 현재 아래와 같은 설정하여 더 이상 QClass 생성에 관련한 오류를 마주하고 있지 않습니다.

참고하시면 좋을 것 같습니다.

 

 

[QueryDSL] Q클래스 생성 및 설정.

 

[QueryDSL] Q클래스 생성 및 설정. -종결- (feat.intelliJ)

사내에 querydsl 설정을 아주 잘 하는 동료가 있다면 문제가 없겠지만, 저와 같이 홀로 분투하시는 분들을 위해 저도 지금까지 이 방법 저 방법 해오다가 깔끔하게 해결된 상태를 공유하고자 합니

jong-bae.tistory.com

 

 

 

 


 

 

반응형
댓글
반응형
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday