Querydsl BooleanBuilder와 BooleanExpression #84
Unanswered
chadongmin
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
날짜 필터링 기능 구현 중 WHERE절 and조건이 잘 작동하지 않는 문제점이 발생
날짜 필터링이란 RoomProduct의 startDate가 쿼리스트링으로 넘어온 startDate와 endDate의 범위이면서 stock이 1이상인 것만 조회하는 기능
현재 테이블 구조에서는 Accommodation과 Room, RoomProduct를 조인해서 조회하는 쿼리문을 작성하는 것이 옳다고 판단함.
BooleanBuilder
위와 같은 쿼리문이 수행됨
요청 URI :
GET http://localhost:8080/v1/accommodations?startDate=2023-11-28&endDate=2023-11-30
11월 28일에서 11월 30일에 stock이 1 이상인 방은 7번 room만 존재한다.
7번 room은 3번 숙소의 객실이므로 3번 숙소만 조회되어야 한다. 하지만 1번숙소와 3번 숙소가 함께 조회되었다.
BooleanExpression
위와 같이 메서드 형식으로 사용되는 BooleanExpression으로 수정한뒤, where절에 삽입함
BooleanBuilder를 사용했을때는 exist절이 존재했었는데, BooleanExpression을 사용하니 exist절이 사라지고 WHERE절에서 바로 AND 조건이 실행되는 모습을 확인할 수 있다.
정상적으로 쿼리스트링 범위의 날짜에 존재하면서 stock이 1이상인 즉, 예약가능한 3번 숙소만 조회되는 모습을 확인할 수 있다.
Beta Was this translation helpful? Give feedback.
All reactions