MongoDB & QueryDSL 연동 방법다음에는 한 번에 연결하기 위해 글을 작성해 봅니다.!! Spring Data JPA나 Spring Data MongoDB로 간단한 쿼리는 처리할 수 있지만, 복잡한 쿼리는 가독성이나 안정성 측면에서 QueryDSL을 사용하는 것이 좋다고 느껴서 MongoDB와 QueryDSL 세팅 방법을 공유하고자 합니다. 더보기Spring RDS 환경 QueryDSL 설정 방법// querydslimplementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.ver..
문제 상황Querydsl을 통해 MySQL에 날짜 함수를 적용하려고 하는데 이슈가 있었다.날짜 함수를 적용하기 위해서는 Expressions.stringTemplate 을 이용하면 원하는 mysql 함수를 적용시킬 수 있다고 생각했다.날짜 연산이 들어간 조건문을 만들어 디버깅을 하는데 해당 조건을 인식할 수 없다고 에러가 발생했다. reasonHibernate에서 아직 INTERVAl 예약어를 지원하지 않는다. QueryDsl 코드는 컴파일 이후 Hibernate로 변경되어 실행되므로, Hibernate에서 지원하지 않는 예약어는 사용할 수 없다!! (Querydsl은 HQL(Hibernate Query Language) 쿼리를 Type-Safe 하게 유지보수해야 할 필요로 탄생했다.) Querydsl ..
QueryParameter - Sort/search?category=book&price=1000&page=0&size=10&sort=id,asc&sort=price,desc 정렬 조건은 queryparameter를 통해 주로 전달합니다.ex) sort=id,asc- 위 코드는 id 값을 기준으로 오름차순 정렬을 의미합니다. 복수 개의 정렬은 단일 조건이 여러 번 전달받는 것과 같습니다.ex) sort=id,asc&sort=price,desc querydsl에서 정렬 조건을 주기 위해 2가지 방법이 있습니다.QEntity.field.asc() / QEntity.field.desc()첫 번째는 정적인 방법으로 QEntity.field.asc() / QEntity.field.desc() 방법이 있습니다.ret..
JPAExpressionTo create a subquery you use the static factory methods of JPAExpressions. examplequeryFactory.selectFrom(department) .where(department.size.eq( JPAExpressions.select(d.size.max()).from(d))) .fetch(); where 절에 서브쿼리 적용하기 (eq)@Testpublic void subQuery() throws Exception { QMember memberSub = new QMember("memberSub"); List result = queryFactory .selectFrom(member)..