반응형
Querydsl에서 CASE WHEN을 사용하기 위해서는 CaseBuilder()를 사용하면 됩니다.
사용 방법은 아래를 참고하시면 됩니다.
예1)
Expression<String> cases = new CaseBuilder()
.when(c.annualSpending.gt(10000)).then("Premier")
.when(c.annualSpending.gt(5000)).then("Gold")
.when(c.annualSpending.gt(2000)).then("Silver")
.otherwise("Bronze");
예2)
import static kr.com.wow.QTbUser;
// 클래스 및 함수 선언부 생략
JPAQuery<TbUser> query = jpaQueryFactory
.from(tbUser)
.select(Projections.bean(TbUser.class,
tbUser.userCode
, new CaseBuilder()
.when(tbUser.userType.eq("1")).then("일반")
.when(tbUser.userType.eq("2")).then("관리자")
.otherwise("")
- CaseBuilder : CASE WHEN 문법 시작
- when : 조건문
- then : when절이 true일 경우 실행
- otherwise : when절이 false 일 경우 실행
- as : CaseBuilder() 사용 시 alis(as)를 하지 않으면 결과물 필드의 이름을 알 수 없기 때문에 오류 발생
[더 자세한 정보는 공식 API 문서를 참조]
http://www.querydsl.com/static/querydsl/4.1.4/apidocs/com/querydsl/core/types/dsl/CaseBuilder.html
728x90
반응형
'Database ( DB ) > JPA, Querydsl' 카테고리의 다른 글
No identifier specified for entity (0) | 2020.12.19 |
---|---|
jpa] @CreatedDate annotation이 동작하지 않는 경우 (0) | 2020.12.04 |
querydsl에서 select에 string 사용 (0) | 2019.08.12 |
[querydsl] subquery alias (0) | 2019.07.23 |
[Querydsl] 동적으로 where 만들기 (0) | 2019.07.18 |