-
[ JPA ] 복합키(composite key) 매핑 (@EmbeddedId)JPA 2022. 2. 21. 14:40반응형
현재 Group과 Member 테이블 사이에 GroupMemberMap이라는 매핑 테이블을 만들어 그룹별로 멤버를 저장하고 관리하려 한다.
1. 먼저 GroupMemberMap 테이블 생성 후 groupId와 MemberId를 PK로 설정해
groupId와 MemberId를 복합키(데이터를 대표하는 키가 여러 개의 컬럼으로 구성된 것)로 가지게 설정해 두었다.
2. Primary Key Class에는 @Embeddable 어노테이션을 달아준다.
@Entity @Table(name = "group_member_map") @NoArgsConstructor @AllArgsConstructor @Data @Builder @EntityListeners(AuditingEntityListener.class) public class GroupMemberMap { @EmbeddedId private GroupMemberMapId id; }
( 검색 키워드 : jpa composite key )
https://www.baeldung.com/jpa-composite-primary-keys
3. 그런다음 @Embeddable 어노테이션을 사용해 GroupMemberMapId 엔티티에 이 클래스를 포함시킨다.
@Embeddable @Data @NoArgsConstructor @AllArgsConstructor public class GroupMemberMapId implements Serializable { private Long groupId; private Long memberId; }
(검색 키워드 : jpa method name embedded id)
https://www.baeldung.com/spring-jpa-embedded-method-parameters
4. Repository에서 이렇게 데이터를 가져올 수 있다.
List<GroupMemberMap> findByIdGroupId(Long groupId);
반응형'JPA' 카테고리의 다른 글
[ Querydsl ] 프로젝션(Projections)과 결과반환 (프로퍼티접근, 필드직접접근, 생성자 사용) (0) 2022.03.28 [ Querydsl ] 동적쿼리 만들기(BooleanExpression, BooleanBuilder) (0) 2022.03.22