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과 동일하다.