📘 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",
        .
        .
        .
        .
   }
]