작성
·
3.1K
답변 5
6
안녕하세요. 별님
다음과 같이 작성하면 됩니다^^
@Test
void simpleCaseByOrderBy() {
NumberExpression<Integer> roleRankPath = new CaseBuilder()
.when(member.rolename.eq("ROLE_MASTER")).then(1)
.when(member.rolename.eq("ROLE_ADMIN")).then(2)
.otherwise(3);
List<Tuple> fetch = queryFactory
.select(
member.username,
member.rolename,
roleRankPath.as("roleRank")
)
.from(member)
.orderBy(roleRankPath.desc())
.fetch();
for (Tuple tuple : fetch) {
System.out.println("tuple.get(member.username) = " + tuple.get(member.username));
System.out.println("tuple.get(member.rolename) = " + tuple.get(member.rolename));
System.out.println("tuple.get(roleRankPath) = " + tuple.get(roleRankPath));
}
System.out.println("result = " + fetch);
}
도움이 되셨길 바래요^^
1
0
0
ORDER BY (
CASE
WHEN ENABLE = 0 THEN 4
WHEN ROLENAME = 'ROLE_MASTER' THEN 1
WHEN ROLENAME = 'ROLE_ADMIN' THEN 2
WHEN ROLENAME = 'ROLE_USER' THEN 3
END
), REGDATE DESC
오라클로 만든 쿼리중 ORDER BY절입니다.
enable은 탈퇴유무이고 0은 탈퇴회원이라 가장 마지막에, 그다음은 마스터, 관리자, 일반회원순으로 정렬을 하려고 합니다.
0
안녕하세요. 별님
Case 관련 구문을 orderBy절에는 넣을 수 없습니다.
혹시 어떤 것을 하고 싶으신지 설명해주시면 제가 다른 방법을 찾아봐드릴께요^^
감사합니다.