JPQL 타입 표현은 SQL과 동일하다.

TYPE EXAMPLE
String ‘Hello world’, ‘Hello’
Number 100L (Long), 100D (Double), 100F (Float)
Boolean TRUE, FALSE
Enum Spa.MemberType.User (jpql스트링에 넣을 땐 패키지 명을 반드시 포함해야한다.)
Entity TYPE(m) = Member (상속 관계에서 사용한다.)


1. 타입 표현

/* 1. */
String jpql = "select m.username, 'HELLO', true from Member m";

/* 2. */
String jpql2 = "select m.username, 'HELLO', true from Member m where m.type = jpabook.MemberType.Admin";
String jpql3 = "select m.username, 'HELLO', true from Member m where m.type = :userType";
List<Object[]> result = em.createQuery(jpql3)
      										.setParameter("userType", MemberType.ADMIN)
													.getResultList();


/* 3. */
String jpql4 = "select i from Item i where type(i) = Book";
List<Object[]> result = em.createQuery(jpql4, Item.class)
													.getResultList();

/* 1. */

문자열은 ‘ ‘ : 작은 따옴표로 묶으면 되고, Boolean 타입은 true, TRUE 대소문자 둘다 가능하다.

/* 2. */

enum타입은 jpql 쿼리를 구성하는 스트링 안에 넣을 땐, 위의 코드에 있는 주석처럼 패키지 경로를 모두 적어줘야한다. 아니면 파라미터 바인딩을 통해서 위의 코드처럼 적을 수 있다.

/* 3. */

엔티티 타입에서 상속 관계에 있는 엔티티 [ ex) Book은 Item을 상속받아 구현된 엔티티 ] 일 경우 위의 코드처럼 상속 Book만 뽑아올 수 있다.

2. JPQL 기타

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

모두 SQL과 동일하다.