테이블에 PK가 하나가 아닌 여러 개 일 경우 설정하고자 한다.
1. 시작하기 전
- @EmbeddedId : ID 필드로 별도의 객체를 사용할 수 있도록 도와주는 어노테이션
- @IdClass : 해당 컬럼이 PK임을 알려주는 어노테이션
- Serializable : 생성한 객체를 파일로 저장하거나, 저장한 객체를 읽을 경우 또는 다른 서버에서 생성한 객체를 받기 위해 구현하는 인터페이스 (직렬화)
2. 전체 파일
파일은 두 개로 나누었다.
PK 는 따로 한 파일에 (Seq.java) 모아두었고
테이블은 Storage.java 에 생성하였다.
Seq.java 파일
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Embeddable
@ToString
@Getter
@Setter
public class Seq implements Serializable {
@Column(name = "ID")
private String ID;
@Column(name = "PW")
private String PW;
@Column(name = "AGE")
private String AGE;
}
Storage.java 파일
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "테이블명")
@Builder
@AllArgsConstructor
@Data
@Embeddable
public class Storage implements Serializable{
@EmbeddedId
private Seq seq;
@Column(name = "a")
private String a;
@Column(name = "b")
private String b;
@Column(name = "c")
private String c;
@Column(name = "d")
private String d;
}
위의 두 파일처럼 설정하게 되면
PK는 ID, PW, AGE 세 가지가 되는 것이고 추가로 다른 컬럼은 a,b,c,d 가 들어가게 된다.
'ORM > JPA' 카테고리의 다른 글
[JPA] SpringBoot 환경에 검색 기능 간단 구현 (+ 페이징 처리) (0) | 2023.03.08 |
---|---|
[JPA] JPA For queries with named parameters 오류 해결 (0) | 2023.02.20 |