Open BananMoon opened 2 months ago
Spring 에서는 아래와 같이 PK인 필드들을 별도의 클래스로 생성하고, PK 클래스를 엔티티 클래스 내 필드로 선언합니다.
@Embeddable 애노테이션을 사용하는 방식과 @IdClass 애노테이션을 사용하는 방법이 있습니다.
@Embeddable
@IdClass
복합 키 클래스에 @Embeddable 을 선언한다. 엔티티에는 @EmbeddedId 애노테이션이 추가된 클래스를 필드로 선언한다.
@EmbeddedId
@Setter // 필요?? @Getter // 필요?? @Embeddable class MultiPK implements Serializable { private Long seq; private String name; } @Entity class Entity { @EmbeddedId private MultiPK id; private String phone; }
@Setter // 필요?? @Getter // 필요?? class MultiPK implements Serializable { private Long seq; private String name; } @Entity @IdClass(MultiPK.class) class Entity { @Id private Long seq; @Id private Long name; private String phone; }
참고 다중 PK의 필드도 JPA의 메서드 명명 규칙을 이용해 선언할 수 있습니다.
Spring 에서는 아래와 같이 PK인 필드들을 별도의 클래스로 생성하고, PK 클래스를 엔티티 클래스 내 필드로 선언합니다.
@Embeddable
애노테이션을 사용하는 방식과@IdClass
애노테이션을 사용하는 방법이 있습니다.1.
@Embeddable
애노테이션 이용복합 키 클래스에
@Embeddable
을 선언한다. 엔티티에는@EmbeddedId
애노테이션이 추가된 클래스를 필드로 선언한다.@IdClass
애노테이션 이용 엔티티에@IdClass
애노테이션 추가. 유의할 점. 복합 키들의 필드 이름이 MultiPK 클래스의 필드 이름과 동일해야 한다.