728x90
반응형
JPQL에서 타입 표현은 아래와 같이 가능하다.
(1) 문자 : 'HELLO', 'She''s' : ' 를 표현하려면 두번 적으면 된다.
(2) 숫자 : 10L(Long), 10D(Double), 10F(Float)
(3) Boolean : TRUE, FALSE
(4) ENUM : jpabook.MemberType.Admin (패키지명 포함)
예시)
① MemberType.java 생성
package jpql;
public enum MemberType {
ADMIN, USER
}
② Member.java 에 MemberType type 추가
@Enumerated(EnumType.STRING)
private MemberType type;
public MemberType getType() {
return type;
}
public void setType(MemberType type) {
this.type = type;
}
@Override
public String toString() {
return "Member{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
", type=" + type +
'}';
}
③ JpaMain.java 에 예제 소스 추가
Team team = new Team();
team.setName("teamA");
em.persist(team);
Member member = new Member();
member.setUsername("teamA");
member.setAge(10);
member.setTeam(team);
member.setType(MemberType.ADMIN);
em.persist(member);
em.flush();
em.clear();
String query = "select m.username, 'HELLO', TRUE from Member m where m.type = :userType";
List<Object[]> resultList = em.createQuery(query)
.setParameter("userType", MemberType.ADMIN)
.getResultList();
for (Object[] objects : resultList) {
System.out.println("objects = " + objects[0]);
System.out.println("objects = " + objects[1]);
System.out.println("objects = " + objects[2]);
}
(5) 엔티티 타입 : TYPE(m) = Member ( 상속 관계에서 사용)
예시)
① Book.java 에 @DiscriminatorValue 추가
package jpabook.jpashop.domain;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue("BB")
public class Book extends Item{
private String author;
private String isbn;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
}
② JpaMain.java 에 예제 소스 추가
Book book = new Book();
book.setName("JPA");
book.setAuthor("김기룡");
em.persist(book);
List<Item> resultList = em.createQuery("select i from Item i where type(i) = Book", Item.class).getResultList();
tx.commit();
JPQL 기타 표현식
- SQL과 문법이 같은 식
- EXISTS, IN
- AND, OR, NOT
- =, >, >=, <, <=, <>
- BETWEEN, LIKE, IS NULL
728x90
반응형
'자바 > JPA' 카테고리의 다른 글
[JPA/Java] JPQL 기본함수 및 사용자 정의 함수 호출 (0) | 2023.05.10 |
---|---|
[JPA/Java] JPQL CASE 문, COALESCE, NULLIF (0) | 2023.05.09 |
[JPA/Java] JPQL 서브쿼리 (0) | 2023.05.09 |
[JPA/Java] JPQL 조인(Join) (0) | 2023.05.09 |
[JPA/Java] 페이징 API (0) | 2023.05.03 |
댓글