📘 Web/Spring, JPA
[JPA] @Embeddable를 이용한 복합키 설정
a n u e
2023. 3. 3. 16:49
JPA의 복합키 설정 방법은 @Embeddable 또는 @IdClass를 이용하면 된다.
여기서는 @Embeddable 이용
year와 category를 복합키로 만들어주고 싶은 경우
1. class를 하나 만들어 Serializable 인터페이스를 상속한다.
해당 클래스에 복합키로 사용할 컬럼들을 명시한다.
@Data
@Embeddable
@NoArgsConstructor
@AllArgsConstructor
public class CategoryPK implements Serializable {
@Column(name="YEAR")
private String year;
@Column(name="CATEGORY_NAME")
private String categoryName;
}
2. 선언한 복합키 클래스(CategoryPK)를 Entity에 연결한다.
@Entity
@Data
@Getter
@Setter
@Table(name="TB_01")
public class Tb01Entity implements Serializable {
@EmbeddedId
private CategoryPK categoryPK;
@Column(name = "YEAR", length=100, nullable = false, insertable=false, updatable=false)
private String year;
@Column(name = "CATEGORY_NAME", length=100, nullable = false, insertable=false, updatable=false)
private String categoryName;
.
.
.
}
3. 해당 테이블을 조회하는 API를 호출해보면 이렇게 나온다.
[
{
"categoryPK": {
"year": "2023",
"categoryName": "카테고리01"
},
"year": "2023",
"categoryName": "카테고리01",
.
.
.
.
}
]