복합키 설정 방법
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 |