Spring
Spring JPA @Id 복합키 설정
푸른화염포
2022. 10. 24. 21:12
728x90
Spring JPA를 사용하면서 기본키가 2개 이상 컬럼으로 구성된 테이블을 Entity로 지정할 때가 있다.
예시로 아래와 같은 Work 테이블과 WorkE 엔티티 클래스가 있다고 가정했을때
@Table(name = "Work")
public class WorkE {
@Id
@Column(name = "name")
private String name;
@Id
@Column(name = "type")
private String type;
....
}
이름(name)과 구분(type) 두개의 컬럼을 기본키로 사용하고 있는 경우,
위처럼 두 필드에 모두 @Id 어노테이션을 사용하면 된다고 생각할 수 있다.
하지만 추가해야할 것이 있는데,
아래처럼 엔티티에 @IdClass 어노테이션을 추가해줘야한다.
@IdClass(WorkE.PK.class)
@Table(name = "Work")
public class WorkE {
@Id
@Column(name = "name")
private String name;
@Id
@Column(name = "type")
private String type;
....
public static class PK implements Serializable {
private String name;
private String type;
}
}
@IdClass에 기본키 형태의 클래스를 지정해줘야하기 때문에,
WorkE안에 PK라는 클래스를 추가로 넣었다.
이렇게 쓰면 잘된다.
728x90