jpa entity에 복합키 사용하는 방법
2023. 7. 16. 11:00ㆍ카테고리 없음
반응형
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import lombok.Getter;
import lombok.Setter;
@Entity
@Getter
@Setter
@IdClass(UserGroupPK.class)
public class UserGroup {
@Id
private String groupId;
@Id
private String userId;
}
import java.io.Serializable;
import lombok.Data;
@Data
public class UserGroupPK implements Serializable {
private String groupId;
private String userId;
}
.
JPA Entity에서 복합키를 사용할 때 다음과 같은 규칙을 지켜야 합니다.
- PK(primary key)에 해당하는 컬럼 모두에 @Id 어노테이션을 사용해야 한다.
- PK를 선언할 클래스를 생성해야 한다.
- PK 클래스는 Serializable의 구현체여야 한다.
- PK 클래스를 @IdClass 어노테이션을 사용해서 지정해야 한다.
[참고사항]
만약 PK 클래스에 Serializable이 없는 경우는 다음과 같은 에러가 발생합니다.
Caused by: org.hibernate.MappingException: Composite-id class must implement Serializable:
반응형