복합 키를 구현하기 위해서 두 가지 방법을 이용할 수 있습니다.

  1. IdClass 어노테이션 이용
  2. Embeddable 어노테이션 이용

IdClass 어노테이션은 https://emoney96.tistory.com/249 에 정리가 되어있으며,

이 글에서는 Embeddable 어노테이션 적용'만' 다룰 것입니다.

 

우선 @Embeddable을 적용할 Id전용 클래스를 생성합니다.

@IdClass와 다른 점은 @Embeddable을 붙인다는 점밖에 없습니다.

FollowId 클래스를 생성합니다.

 

Follow Entity 클래스에서 EmbeddedId 어노테이션을 적용한 FollowId 클래스 변수를 선언합니다.

 

그 다음 @MapsId 어노테이션을 이용하여 FollowId의 각 변수들과 매핑시켜주시면 됩니다.

여기서 주의할 점은

User 클래스에서 작성한 mappedBy의 이름과 Follow의 변수명이 같아야하고,

Follow 클래스에서 작성한 MapsId의 value와 FollowId의 변수명이 같아야합니다.

 

FollowId의 변수 fan을 fan1으로 변경했을 경우에도 실행은 됩니다.

하지만 table은 의도한대로 만들어지지 않는 것을 알 수 있습니다.

위의 결과는 fan1은 외래 키가 아니라 follow table의 순수 컬럼이자 기본 키가 되는 것이고,

fan은 외래 키가 맞지만 FollowId 클래스에 매핑할 "fan" 변수가 없어서 기본 키가 되지 못한 상황입니다.

 

 

+ Recent posts