프로젝트 git url | github.com/rtef23/JpaStudy |
필요 | 1. docker 2. docker-compose |
프로젝트 정보 | mysql : 5.7 - docker image java : 1.8 |
JPQL 타입 표현
- 문자
- 'HELLO'
- 숫자
- 10L(Long)
- 10D(Double)
- 10F(Float)
- Boolean
- TRUE
- FALSE
- Enum
- xxx.xxx.MemberType.ADMIN (패키지 포함)
- 엔티티 타입
- TYPE(m) = Member (상속 관계에서 사용)
//[JPQL]
SELECT m.username
, 'HELLO'
, TRUE
, 10L
, package.to.MemberType.ADMIN
FROM Member m
WHERE m.member_type = package.to.MemberType.USER
//Item - Book
// ㄴ Album
// ㄴ Music
//과 같은 상속 관계
SELECT i
FROM Item i
WHERE type(i) = Book
기타식
CASE 식
- 기본 CASE 식
//[JPQL]
SELECT CASE WHEN m.age <= 10 then '학생 요금'
WHEN m.age >= 60 then '경로 요금'
else '일반 요금'
END
FROM Member m
- 단순 CASE 식
//[JPQL]
SELECT CASE t.name
WHEN 'teamA' then 'A'
WHEN 'teamB' then 'B'
ELSE 'C'
END
FROM Team t
- COALESCE : 하나씩 조회해서 null이 아니면 반환
//[JPQL]
SELECT coalesce(m.username, '이름 없는 회원')
FROM Member m
- NULLIF : 두 값이 같으면 null 반환, 다르면 첫번째 값 반환
//[JPQL]
//m.username이 관리자면 null을 반환 다른 경우, 첫번째 값 반환
SELECT nullif(m.username, '관리자')
FROM Member m
JPQL 기본 함수
- CONCAT
- SUBSTRING
- TRIM
- LOWER, UPPER
- LENGTH
- LOCATE
- ABS, SQRT, MOD
- SIZE
//[JPQL]
SELECT SIZE(t.members)
FROM Team t
- INDEX(JPA 용도)
//[JPQL]
//rownum과 유사
SELECT INDEX(t.members)
FROM Team t
JPQL 사용자 정의 함수
- Hibernate의 경우, 사용전 방언에 추가해야 한다.
- 사용하는 DB 방언을 상속받고, 사용자 정의 함수를 등록한다.
//[JPQL]
SELECT function('group_concat', i.name)
FROM Item i
'JPA' 카테고리의 다른 글
[JPA] 26. Fetch 조인 - 기본 (0) | 2021.02.11 |
---|---|
[JPA] 25. 경로표현식 (0) | 2021.02.11 |
[JPA] 23. JPQL - 조인, 서브 쿼리 (0) | 2021.01.31 |
[JPA] 22. JPQL - 기본 문법 2 (0) | 2021.01.27 |
[JPA] 21. JPQL - 기본 문법 1 (0) | 2021.01.26 |