조건식(CASE 등등)

JPQL 작성 시 주의해야할 점!

String으로 작성하는 것이기 때문에 컴파일 오류로 잡아낼 수 없다! 그러므로 오타나 띄어쓰기에 매우 주의해야한다!

아래 코드가 정답코드인데, 마지막 String query에서 "from Member m " 쿼리는 공백문자를 포함한다! 공백문자가 나온다음에 "로 닫아주어야 한다!

String query = "select nullif(m.username, '관리자') as username " + "from Member m ";

자바의 switch-case와 비슷

  1. 기본 CASE 식 : 조건 넣을 수 있음.

    select
        case when m.age <= 10 then '학생요금'
             when m.age >= 60 then '경로요금'
             else '일반요금'
        end
    from Member m
  2. 단순 CASE 식 : Exact Matching. 정확하게 매칭되야 함.

    select
        case t.name
            when '팀A' then '인센티브110%'
            when '팀B' then '인센티브120%'
            else '인센티브105%'
        end
    from Team t

아래 함수들은 JPA에서 제공하는 표준 함수들이므로 어떤 DB들 간에 다 적용 가능하다.

  • COALESCE: 하나씩 조회해서 null이 아니면 반환

  • NULLIF : 두 값이 같으면 null 반환, 다르면 첫번째 값 반환

Last updated