본문 바로가기
프로그램/JPA

[Querydsl] Case When 사용하기

by cbwstar 2021. 8. 3.
728x90
반응형
  • CaseBuilder를 통해 CaseWhen 문법 시작
  • when: 조건문
  • then: when절이 true일 경우 실행
  • otherwise: when절이 false일 경우 실행
  • otherwise가 끝나면 결과 물에 대한 alias(as) 적용
    • 일반적으로는 Entity의 필드명이 자동으로 as 적용됨
    • 하지만 CaseBuilder를 통해 계산한 결과물은 필드명이 없음
    • alias 하지 않으면 결과물 필드가 어떤 필드로 가야할지 명시되지 않아 오류가 발생
      java
      닫기
      public List<TnAuthorIExtDTO> selectAuthManageList(Map<String,String> searchInfo) { ‌‌String searchKeyword = searchInfo.get("searchKeyword"); ‌‌ ‌‌ ‌‌List<TnAuthorIExtDTO> tnAuthorList = queryFactory ‌‌‌‌.select(Projections.bean(TnAuthorIExtDTO.class, ‌‌‌‌‌‌tnAuthorI.authorCode, ‌‌‌‌‌‌tnAuthorI.authorNm, ‌‌‌‌‌‌tnAuthorI.authorDc, ‌‌‌‌‌‌tnAuthorI.regDt, ‌‌‌‌‌‌new CaseBuilder() ‌‌‌‌‌‌.when(tnAuthorI.useYn.eq("Y")) ‌‌‌‌‌‌.then(1) ‌‌‌‌‌‌.otherwise(0).as("useYn"), ‌‌‌‌‌‌Expressions.asString("롤등록").as("btnRole") ‌‌‌‌‌)) ‌‌‌‌.from(tnAuthorI) ‌‌‌‌.where(eqAuthorNm(searchKeyword) ‌‌‌‌‌) ‌‌‌‌.fetch(); ‌‌ ‌‌log.debug("tnAuthorList : " + tnAuthorList ); ‌​​​​ ‌‌return tnAuthorList; ‌‌ ‌‌ } private BooleanExpression eqAuthorNm(String searchKeyword) { ‌‌if (StringUtils.isBlank(searchKeyword)) { ‌‌‌return null; ‌‌} ‌‌return tnAuthorI.authorNm.like("%"+searchKeyword+"%"); }
728x90
반응형

'프로그램 > JPA' 카테고리의 다른 글

JPA 복합키  (0) 2021.08.05
no persistence.xml file found in project  (0) 2021.07.22
전자정부 표준프레임워크 3.10  (0) 2021.07.06
jboss-web.xml  (0) 2021.07.02
web.xml  (1) 2021.07.02


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."