Back-End/SpringBoot
[SpringBoot/JPA] @Embeddable, @EmbeddedId로 복합키 설정
코딩콩
2022. 5. 21. 22:00
복합키 설정 방법
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