[자바 ORM 표준 JPA 프로그래밍 - 기본편] 10-7강
https://inf.run/2zDo 강의를 수강하고 작성하는 게시물입니다.
1. JPQL 타입 표현
- 문자 : ‘HELLO’, ‘She’’s’
- 숫자 : 10L(Long), 10D(Double), 10F(Float)
- Boolean : TRUE, FALSE
- ENUM: jpabook.MemberType.Admin (패키지명 포함)
- 엔티티 타입: TYPE(m) = Member (상속 관계에서 사용)
ENUM 사용할때 주의해야 한다.
1.1. ENUM 타입 예시
@Entity
public class Member{
// 중략
@Enumerated(EnumType.STRING)
private MemberType type;
// 후략
}
public enum MemberType {
ADMIN, USER
}
위처럼 코드가 존재한다고 할때
String query = "select m.username, 'HELLO', TRUE From Member m";
List<Object[]> result = em.createQuery(query)
.getResultList();
for(Object[] objects : result) {
System.out.println("objects = " + objects[0]);
System.out.println("objects = " + objects[1]);
System.out.println("objects = " + objects[2]);
}
위처럼 출력한다고 했을 때 아래처럼 출력된다.
objects = teamA
objects = HELLO
objects = true
쿼리에서 true의 경우 대소문자 구분하지 않는다.
String query = "select m.username, 'HELLO', TRUE From Member m " +
"where m.type = jpql.MemberType.ADMIN";
ADMIN 앞은 패키지 이름이고 위 처럼 쿼리를 넣으면 ADMIN 타입의 멤버만 조회하게된다.
아래처럼 사용할 수도 있다.
String query = "select m.username, 'HELLO', TRUE From Member m " +
"where m.type = :userType";
List<Object[]> result = em.createQuery(query)
.setParameter("userType", MemberType.ADMIN)
.getResultList();
1.2. 엔티티 타입 예시
Item을 Boojk, Album, Movie로 분리했다고 했을때 아래처럼 조건을 취할 수 있다.
(어노테이션으로 DiscriminatorValue라고 설정해놨을 때 - 기억이 안나면 상속관계를 다시 보면 된다.)
String query = "select i From Item i " +
"where type(i) = Book";
em.createQuery(query, Item.class)
.getResultList();
2. JPQL 기타
- SQL과 문법이 같은 식
- EXISTS, IN
- AND, OR, NOT
- =, >, >=, <, <=, <>
- BETWEEN, LIKE, IS NULL
사실 SQL과 대부분 문법이 같다.
2.1. BETWEEN 예시
String query = "select m.username, 'HELLO', true FROM Member m " +
"where m.age between 0 and 10";
댓글 남기기