-
[JPA] JPQL로 복합키 PK 검색JPA 2023. 10. 6. 11:09728x90
안녕하세요.
오늘은 JPQL을 이용해 복합키를 가진 테이블에서 하나의 PK를 이용해 검색하는 방법을 대해 적어보고자 합니다.
요즘 이래저래 정신이 없어서 글을 잘 못쓰네요. ㅠㅠ
(사실 개인 프로젝트 UI만드는데 걸리는 시간에 비해 결과물이 너무 안나와 답답함을 안고 살아가고 있습니다.)
저같은 JPA초보에게는 조금 당황스러울 뻔! 했던 복합키중 하나를 JPQL을 이용해 검색하겠습니다.
먼저 테이블은
이렇게 복합키를 사용하는 구조입니다.
저는 여기서 Biznumber데이터를 검색해볼 예정입니다.
다음은 제가 구성한 Class 구조입니다.
먼저 PK를 담은 CompanyPK Class입니다.
CompanyPK Class
@Embeddable @NoArgsConstructor @EqualsAndHashCode @Getter public class CompanyPK implements Serializable{ private String code; private String biznumber; }
- 회사 코드가 있어서 내용을 최대한 정리 후 올립니다. 참고 부탁드립니다.
다음은 Company Class를 작성하겠습니다.
Company Class
@Entity @Getter public class Company{ @EmbeddedId private CompanyPK companyId; ... }
- 다른 Entity는 삭제 후 중점적으로 알아볼 CompanyPK만 남겼습니다.
그럼이제 JPQL을 이용해 검색해볼까요?
CompanyRepository Class(JPQL)
public Company BizNumber검색(String biznum) { return em.createQuery("select c from Company c where c.companyId.biznumber=:biznum", Company.class) .setParameter("biznum", biznum) .getSingleResult(); }
검색하는 쿼리입니다. PK로 설정된 값을 검색하기에 getSingleResult를 사용했습니다.
Company Class안의 변수인 CompanyPK Class companyId를 찾고, CompanyPK Class안의 biznum을 통해 검색 하면 되겠습니다.
오늘은 간단하게 이렇게 글을 작성하고 마무리하겠습니다.
감작스레 날씨가 추워졌네요. 감기조심하시고 오늘도 좋은하루 보내시길 바랍니다.
감사합니다.
😉😉👍
'JPA' 카테고리의 다른 글
[JPA] 복합키 중 하나의 PK끼리 매핑 (0) 2023.10.24 [JPA, Query DSL] Tuple을 이용한 Join Entity 탐색 (0) 2023.10.10 [JPA] No default constructor for entity(에러) (0) 2023.09.07