복합키 설정 방법
1. @Embeddable
2. @IdClass
이렇게 두가지가 있는데 1번 사용
@Embeddable 어노테이션 추가한 Id 클래스 생성
@NoArgsConstructor @AllArgsConstructor @Embeddable public class MemberId implements Serializable { @Column(name = "MB_NAME") private String name; @Column(name = "MB_BIRTHDAY") private String birthday; }
Serializable 인터페이스를 구현한 클래스를 생성
@EmbeddedId로 엔티티에 추가
@Getter @Entity public class Member { @EmbeddedId private MemberId memberId; private String address; ... }
+ 맵핑할 때 컬럼 설정
@Getter @Entity @NoArgsConstructor @AllArgsConstructor @Builder public class Application { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long applicationId; private String title; private String content; ... @OneToOne(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name = "MB_NAME"), @JoinColumn(name = "MB_BIRTHDAY") }) private Member member; }
참고
https://kimseungjae.tistory.com/12
JPA 복합키를 사용 하는 방법 2가지
대부분의 엔티티에는 @Id 애노테이션을 한 개 사용한다. 하지만 테이블의 키가 복합키로 이뤄져 있다면 엔티티를 설계할 때에 이를 고려해야 한다. 복합키 설정 방법은 두 가지가 있다. 1. @Embeddab
kimseungjae.tistory.com
'Back-End > SpringBoot' 카테고리의 다른 글
[SpringBoot/WebClient] WebClient ClientResponse로 성공/실패 응답 객체 각각 받기 (0) | 2022.07.05 |
---|---|
[SpringBoot/MapStruct] MapStruct source 없이 default value 넣기 (0) | 2022.07.04 |
[SpringBoot] 슬랙 메시지 전송 (0) | 2022.05.21 |
[SpringBoot] JPA org.hibernate.LazyInitializationException: could not initialize proxy (0) | 2022.05.21 |
[SpringBoot] 잘 되던 인터셉터가 동작이 안 될 때, 인터셉터 등록 방법 변경 (0) | 2022.04.27 |