[JPA] 쿼리 파라미터 값으로 동적인 결과를 반환할 때 null값 처리(검색 필터링)
2023. 5. 9. 11:19ㆍJPA
예를 들어
category를 선택하고
검색을 할 수 있어서 2가지 이상으로 필터링을 한다면
'?category=운동&search=철봉' 이렇 쿼리 파라미터가 추가된다.
하지만 필터링을 한 가지만 쓴다면
'?category=운동&search=' 처럼 값이 없는 경우가 생길 수 있다.
이런 경우에는 컨트롤러나 서비스 계층에서
값의 유무를 체크(빈값인지)해서 null값으로 JPA 에게 보내준다.
//서비스 계층에서 예시
if (StringUtils.isEmpty(category))
category = null;
if (StringUtils.isEmpty(search))
search = null;
JPA를 구현한 레포지토리 계층에서는 조건절에 'IS NULL' 을 통해 NULL값이라면 무시할 수 있도록 QUERY를 구현해준다.
// 레포지토리에서 예시
@Query("select R from Result R where (:category is null or R.category=:category) and (:search is null or R.search=:search)")
List<Result> find(@Param("category") String category, @Param("search") String search);
'JPA' 카테고리의 다른 글
[JPA, QueryDsl] inner join ? left join ? (0) | 2023.06.06 |
---|---|
[JPA] 프록시 동일 객체 (==, equals) 비교 실패 ? instanceOf 사용 (0) | 2023.05.28 |
[JPA] JPQL - join 예시 (0) | 2023.05.08 |
[JPA] JPQL - 페이징 (0) | 2023.05.08 |
[JPA] JPQL- 기본 쿼리문 예시 (0) | 2023.05.08 |