Spring 에서 QueryDSL 을 사용하기 위해서는 아래와 같은 절차를 따르면 쉽게 사용이 가능하다.
먼저 사용을 위해 maven 등록을 해준다.
https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa
https://mvnrepository.com/artifact/com.querydsl/querydsl-apt
이 두개의 repository를 넣으면 된다.
<dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <version>5.0.0</version> <classifier>jakarta</classifier> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>5.0.0</version> <classifier>jakarta</classifier> </dependency> |
jakarta 이슈로 인해 classifier 를 추가하였다.(자세한 내용은 참고 포스팅 참고)
그리고 Entity를 하나 만들어준다.(QueryDsl을 사용하기 위해서는 Entity를 QClass로 만들어야함.)
다음에 maven compile을 한번 진행해준다.
그래야 QClass 파일이 생긴다.
성공적으로 maven 작업을 했다면 만들어진 QClass 를 아래와 같이 사용하면된다.
public class QuerydslService { @PersistenceContext EntityManager em; public List<QueryTestTable> testQuerydsl(String id) { JPAQueryFactory queryFactory = new JPAQueryFactory(em); QQueryTestTable qTestTable = QQueryTestTable.queryTestTable; List<QueryTestTable> list = queryFactory.select( Projections.fields(QueryTestTable.class, qTestTable.id, qTestTable.nameValue, qTestTable.gender, qTestTable.birth, qTestTable.fctr1, qTestTable.aNo) ).from(qTestTable) .where(qTestTable.id.eq(id)) .orderBy(qTestTable.nameValue.asc()) .fetch(); return list; } } |
만약 QClass가 정상적으로 import 되지 않는다면 아래 참고포스팅을 참고하여 해결할수 있다.
참고 포스팅
https://thenicesj.tistory.com/958
[Error] Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity maven
Querydsl을 셋팅하면서 아래와 같은 에러를 마주쳤다. Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity maven 이전 포스팅에서 jakarta 에 대해서 다룬 글이 있다.자세한 내용은 참고 포스팅 참
thenicesj.tistory.com
https://thenicesj.tistory.com/959
[QueryDSL] Q Class import 안될 때
querydsl 을 사용하기 위해서는 Q Class 를 사용하게 되는데 이때 QClass 를 import 가 안되는 상황이 발생할 수 있다. 대부분 프로젝트에 처음 QClass를 import 할때 생긴다. 이유는 QClass 가 존재하는 디렉
thenicesj.tistory.com
'IT > Java' 카테고리의 다른 글
Resource 인터페이스 관련 (22) | 2024.06.16 |
---|---|
특정 폴더 내에 파일 리스트 뽑아오는 법 (16) | 2024.06.15 |
[Error] com.querydsl.core.types.QBean com.example.queyrdsl.entity.test with modifiers "protected" (12) | 2024.06.11 |
[QueryDSL] Q Class import 안될 때 (14) | 2024.06.10 |
[Error] Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity maven (23) | 2024.06.09 |
댓글