Spring
SpringBoot 2.5.x , Java11 버전 이상에서 QueryDSL 설정하기
dev-jo
2021. 8. 31. 01:21
자바 8 과 기본적인 설정은 아래의 게시글을 확인해주세요
https://dev-jo.tistory.com/38?category=947368
SpringBoot 2.5.X 버전 이상에서 QueryDsl 설정하기
이번 포스팅은 간단하게 querydsl 의 돌아가는 내부 설명 없이 설정법만 기록하겠습니다. 스프링부트 gradle querydsl 버전 2.5.2 7.1.1 4.3.1 plugins { id 'org.springframework.boot' version '2.5.2' id 'io.s..
dev-jo.tistory.com
이번에 사이드 프로젝트 서버 자바 버전을 8 -> 11로 버전업 하면서
QClass 가 생성되지 않는 이슈가 생겼습니다.
해결법만 올리겠습니다.
기본적인 설정은 위의 링크를 참고 한 후
아래의 소스를 변경해주시면 됩니다.
QueryDSL 이라고 적혀있는 부분만 확인하시면 됩니다.
전체 소스
plugins {
id 'org.springframework.boot' version '2.5.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'java-library' // QueryDSL must have
}
group = 'com.dj.server'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
def querydslVersion = '4.3.1'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
//web or spring-starter
implementation 'org.springframework.boot:spring-boot-starter-web:2.5.4'
implementation 'org.springframework.boot:spring-boot-starter-mail:2.5.4'
implementation 'org.springframework.boot:spring-boot-starter-aop:2.5.4'
developmentOnly 'org.springframework.boot:spring-boot-devtools:2.5.4'
//security
implementation 'org.springframework.boot:spring-boot-starter-security:2.5.4'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:2.5.4'
//db
implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.4'
implementation 'org.springframework.boot:spring-boot-starter-validation:2.5.4'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:2.7.3'
//redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis:2.5.4'
//querydsl
implementation group: 'com.querydsl', name: 'querydsl-jpa', version: querydslVersion
annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion, classifier: 'jpa'
annotationProcessor 'javax.persistence:javax.persistence-api:2.2'
annotationProcessor 'javax.annotation:javax.annotation-api:1.3.2'
//websocket
implementation 'org.springframework.boot:spring-boot-starter-websocket:2.5.4'
implementation 'org.webjars:sockjs-client:1.5.1'
implementation 'org.webjars:stomp-websocket:2.3.4'
implementation 'org.webjars:webjars-locator-core'
implementation 'org.webjars:stomp-websocket:2.3.3'
implementation 'org.webjars:bootstrap:3.3.7'
implementation 'org.webjars:jquery:3.1.1-1'
//swagger
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
//lombok
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
// auth0 JWT
implementation 'com.auth0:java-jwt:3.18.1'
//GSON
implementation 'com.google.code.gson:gson:2.8.7'
implementation 'com.h2database:h2:1.4.200'
//test
testImplementation 'org.springframework.boot:spring-boot-starter-test:2.5.3'
testImplementation 'org.springframework.security:spring-security-test:5.5.1'
testImplementation 'com.h2database:h2:1.4.200'
}
// jar plain 파일 생성안되게
// 참고 https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#packaging-executable.and-plain-archives
jar {
enabled = false
}
test {
useJUnitPlatform()
}
변경 사항
변경 전
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
변경 후
annotationProcessor 'javax.persistence:javax.persistence-api:2.2'
annotationProcessor 'javax.annotation:javax.annotation-api:1.3.2'
해당 라이브러리를 변경해 줍시다.
변경 후 부터는 QClass 대신
아래와 같이 QuerydslRepositorySupport 를 상속 받아 사용하면 됩니다.
public class MemberQueryDSLRepositoryImpl extends QuerydslRepositorySupport implements MemberQueryDSLRepository {
public MemberQueryDSLRepositoryImpl() {
super(Member.class);
}
@Override
public Member findByMemberNickName(String nickName) {
final QMember member = QMember.member;
return from(member)
.where(member.memberNickName.eq(nickName))
.fetchOne();
}
}