[JPA] JQPL enum Type 조건문 사용하는 경우
- Coding/JPA
- 2022. 3. 8.
반응형
728x90
반응형
예제코드
- Member.java
package jpql;
import javax.persistence.*;
@Entity
@Table(name="MEMBER")
public class Member {
@Id
@GeneratedValue
private Long id;
private String username;
private int age;
@ManyToOne(fetch = FetchType.LAZY) // Many 쪽(Member)에 TEAM_ID 컬럼 생성됨
@JoinColumn(name = "TEAM_ID")
private Team team;
@Enumerated(EnumType.STRING)
private MemberType type;
public void setType(MemberType type) {
this.type = type;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setTeam(Team team) {
this.team = team;
}
public void changeTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
}
여기서, 아래 코드에 주목하자.
@Enumerated(EnumType.STRING)
private MemberType type;
- MemberType.java
package jpql;
public enum MemberType {
ADMIN
}
상황
Member 엔티티의 type 컬럼을 조건절에 사용해야한다.
Member member = new Member();
member.setUsername("kimseohae");
member.setType(MemberType.ADMIN);
member.setAge(10);
em.persist(member);
Query query = em.createQuery("select m.username, 'HELLO', TRUE from Member as m " +
"where m.type = jpql.MemberType.ADMIN"); // MemberType 은 전체로 작성
1) enum 인 MemberType은 아래와 같이 사용되었다.
where m.type = jpql.MemberType.ADMIN
2) 파라미터 바인딩으로도 해결할 수 있다.
List<Object[]> list = em.createQuery("select m.username, 'HELLO', TRUE from Member as m " +
"where m.type = :userType")
.setParameter("userType", MemberType.ADMIN)
.getResultList(); // MemberType 은 전체로 작성
list.forEach(System.out::println);
반응형
'Coding > JPA' 카테고리의 다른 글
[JPA 프로그래밍] 2. 영속성 관리 (영속성 컨텍스트) (0) | 2022.06.18 |
---|---|
[JPA 프로그래밍] 1. JPA 란 무엇인가? (0) | 2022.06.17 |
[JPA] JQPL JOIN (Inner Join/Left Join/Seta Join) (0) | 2022.02.28 |
[JPA] JQPL 사용해서 페이징 수행 (0) | 2022.02.24 |
[JPA] 복합키 - 비식별관계 매핑하기 (@IdClass, @EmbeddedId) (0) | 2022.02.09 |