반응형
고민
jpa문법에서 Specification을 사용하는데 쿼리로 간단한 select문 표현이 어려웠다.
예로들면 다음과 같은 구문에서 저기 OR표현이 하고 싶었다.
select * from logs where startDate<#{now} AND (endDate is NULL OR endDate > #{now})
결론
- b.or(...)을 통해 해결하였다.
접근방법
#SQL
select * from logs where startDate<#{now} AND (endDate is NULL OR endDate > #{endDate})
#Specification
.and(endDate == null ? null : (r, q, b) -> b.or(b.isNull(r.get(MyModel.END_DATE)), b.greaterThanOrEqualTo(r.get(MyModel.END_DATE), endDate)))
참고
'일반적인 로직적용' 카테고리의 다른 글
.use(moment()에서 java LocalDateTime으로 변환하기) (0) | 2021.01.25 |
---|---|
.use(@Nullable의 재발견) (0) | 2020.12.21 |
.use(awaitility를 사용하여 딜레이 테스트하기) (0) | 2020.12.20 |
.use(@DataRedisTest) (0) | 2020.12.20 |
.use(@MockBean vs @Mock) (0) | 2020.12.17 |