본문 바로가기
프로그램/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 하지 않으면 결과물 필드가 어떤 필드로 가야할지 명시되지 않아 오류가 발생
      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  (0) 2021.07.02

댓글



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

loading