언제 사용하는가?
- @MapsId는 FK를 PK로 지정할 때 사용하는 어노테이션이다.
- OneToOne, ManyToOne
- @MapsId의 value는 관계 속성이 해당하는 복합 키 내의 속성을 지정한다.
- 복합키 내의 어떤 요소와 관계가 있는지 명시한다.
어떻게 사용하는가?
복합 키 매핑 예시
@Embeddable
@EqualsAndHashCode
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
public class EnrollmentId implements Serializable {
private Long lectureId;
private Long timeTableId;
}
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
public class Enrollment extends BaseEntity {
@EmbeddedId
private EnrollmentId enrollmentId;
@MapsId("lectureId")
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "lecture_id", referencedColumnName = "lecture_id")
private Lecture lecture;
@MapsId("timeTableId")
@ManyToOne(fetch = LAZY)
@JoinColumn(name="timetable_id", referencedColumnName = "timetable_id")
private TimeTable timeTable;
}