본문 바로가기
프로그래밍/Back-end

JPA JPQL 타입 표현식과 기타식 그리고 조건식과 기본 함수

by @GodWin 2024. 10. 18.

-

 

-
안녕하세요? 오늘은 JPA의 JPQL 타입 표현식과 기타식 그리고 조건식과 기본 함수 에 대해서 알아보도록 하겠습니다.

 

JPQL 타입 표현


: 문자는 싱글쿼테이션 사용
: 숫자/불리언 타입은 자바와 동일
: enum은 패키지명을 포함해야한다.
> 파라메터에 셋팅해서 사용 가능
: 엔티티 타입은, 상속관계에서 사용한다.
타입 표현 예제
문자 'HELLO', 'She''s'
숫자 10L(Long), 10D(Double), 10F(Float)
Boolean TRUE, FALSE
ENUM jpabook.MemberType.Admin (패키지명 포함)
엔티티타입 TYPE(m) = Member (상속 관계에서 사용)


샘플코드)

String jpql = "SELECT e.컬럼, 'TEST', true FROM 엔티티 e"
            + "WHERE e.enum컬럼 = :생성Enum명"
            + "AND TYPE(e) = 상속엔티티타입명";

List<Object[]> result = em.createQuery(jpql)
      .setParameter("생성Enum명", 엔티티.enum컬럼)
      .getResultList();

System.out.println("result = " + result);

 

기타표현

 

: SQL과 문법과 동일

EXISTS, IN
AND, OR, NOT
=, >, >=, <, <=, <>
BETWEEN, LIKE, IS NULL
등등 ...



조건식 (CASE)


조건식에는
기본 CASE식 단순 CASE식
COALESCE
NULLIF
가 존재합니다.


+
기본 CASE 식

SELECT
    CASE WHEN 조건1 THEN 조건값1
         WHEN 조건2 THEN 조건값2
         ELSE 디폴트값
    END
FROM 엔티티 e


+
단순 CASE 식

SELECT
    CASE e.조건컬럼
        WHEN 조건값1 THEN 결과값1
        WHEN 조건값2 THEN 결과값2
        ELSE 디폴트값
    END
FROM 엔티티 e


+
COALESCE
> 하나씩 조회해서 null이 아니면 반환

SELECT 
    COALESCE(e.조건컬럼, 조건값) as 명칭
FROM 엔티티 e


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

SELECT
    NULLIF(e.조건컬럼, 조건값)
FROM 엔티티 e

 

기본함수


JPQL에서 지원하는 기본 함수에는,

CONCAT ( || 사용 가능)
SUBSTRING
TRIM
LOWER / UPPER
LENGTH
LOCATE
ABS, SQRT, MOD
SIZE, INDEX

등이 존재합니다.

그 외에, 사용자 정의 함수등록 사용 가능합니다.

 



※ JPA에서의 쿼리 방법에 대해서는, 아래 포스팅을 참조 부탁드리겠습니다.

https://logger-debug.tistory.com/entry/JPA-QueryDSL-%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8CSQL-JDBC-MyBatis

 

JPA QueryDSL 네이티브SQL JDBC MyBatis

- -안녕하세요? 오늘은 JPA의 다양한 쿼리 방법에 대해서 알아보도록 하겠습니다. JPA에서는,JPQL ★★★JPQ CriteriaQueryDSL ★★★네이티브 SQLJDBC 직접 사용(MyBatis, SpringJdbcTemplate ...)등등 다양한 쿼

logger-debug.tistory.com

https://logger-debug.tistory.com/entry/JPA-%EC%BF%BC%EB%A6%AC-JPQL-%ED%8E%98%EC%9D%B4%EC%A7%95-%EC%A1%B0%EC%9D%B8-%EC%84%9C%EB%B8%8C%EC%BF%BC%EB%A6%AC

 

JPA 쿼리 JPQL 페이징 조인 서브쿼리

- -안녕하세요? 오늘은, JPA의 쿼리 방법 중 하나인, JQPL에 대해 알아보도록 하겠습니다.※ JPA에서의 쿼리 방법에 대해서는, 아래 포스팅을 참조 부탁드리겠습니다.https://logger-debug.tistory.com/entry/JP

logger-debug.tistory.com

https://logger-debug.tistory.com/entry/JPA-JPQL-%EA%B2%BD%EB%A1%9C-%ED%91%9C%ED%98%84%EC%8B%9D

 

JPA JPQL 경로 표현식

- -안녕하세요? 오늘은 JPA에서 JPQL의 경로 표현식 에 대해 알아보도록 하겠습니다.※ JPA에서의 쿼리 방법에 대해서는, 아래 포스팅을 참조 부탁드리겠습니다.https://logger-debug.tistory.com/entry/JPA-Quer

logger-debug.tistory.com

https://logger-debug.tistory.com/entry/JPA-%EC%BF%BC%EB%A6%AC-%ED%8C%A8%EC%B9%98-%EC%A1%B0%EC%9D%B8-JPQL-FETCH-JOIN

 

JPA 쿼리 패치 조인 JPQL FETCH JOIN

- -안녕하세요? 오늘은 JPA에서 JPQL 패치(FETCH) 조인 에 대해 알아보도록 하겠습니다.※ JPA에서의 쿼리 방법에 대해서는, 아래 포스팅을 참조 부탁드리겠습니다.https://logger-debug.tistory.com/entry/JPA-Qu

logger-debug.tistory.com

https://logger-debug.tistory.com/entry/JPA-%EC%BF%BC%EB%A6%AC-JPQL-%EB%B2%8C%ED%81%AC-%EC%97%B0%EC%82%B0

 

JPA 쿼리 JPQL 벌크 연산

- -안녕하세요? 오늘은 JPA의 JPQL 중 벌크 연산에 대해 알아보도록 하겠습니다.-벌크 연산: 쿼리 한번으로, 여러 테이블 로우 변경: executeUpdate의 결과는 영향받은 엔티티 수를 반환: Update / Delete

logger-debug.tistory.com

 



오늘은 JPA의 JPQL 타입 표현식과 기타식 그리고 조건식과 기본 함수 에 대해서 알아보았습니다.
그럼 오늘도 즐거운 하루 되시길 바라겠습니다.