728x90
[Springboot] 스프링부트 2.7 이상 QueryDsl build.gradle 설정
필요한 부분만 작성했습니다.
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version '2.7.13'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
group = 'org.zerock'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '11'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
}
tasks.named('test') {
useJUnitPlatform()
}
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
이후, build.gradle의 compileQuerydsl을 빌드시켜서 에러가 발생하지 않으면 됩니다. 정상적으로 동작한다면 build 폴더 안에 다음과 같은 구조가 생성됩니다.
entity내의 파일들은 'Q'로 시작하고 그 이후는 엔티티 클래스에서 사전에 설정했던 이름과 동일하게 만들어집니다.
원인
Springboot 2.6부터는 QueryDsl 5.0이상을 지원합니다.
또한 아래 사항들을 체크해야 합니다.
1. PageableExecutionUtils 클래스의 사용 패키지 위치 변경: org.springframework.data.support.PageableExecutionUtils
2. fetchResult(), fetchCount()가 Deprecated됨.count 쿼리의 경우, 다음과 같이 별도로 작성해야한다고 합니다.
@Test
public void count() {
Long totalCount = queryFactory
//.select(Wildcard.count) //select count(*)
.select(member.count()) //select count(member.id)
.from(member)
.fetchOne();
System.out.println("totalCount = " + totalCount);
}
728x90
'JAVA > SpringBoot' 카테고리의 다른 글
외래키 대신 UUID를 사용하여 연관관계의 복잡도 해소하기 (1) | 2024.08.31 |
---|---|
JWT와 Access Token, Refresh Token, RTR 방식 정리 (1) | 2023.09.24 |
Failed to initialize JPA EntityManagerFactory: No identifier specified for entity 에러 해결법 (0) | 2023.07.13 |
[Spring boot] java.lang.NullPointerException findAll() null 에러 해결 (0) | 2022.12.14 |
Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set (0) | 2022.12.01 |