@MapsId

yshjft·2022년 6월 22일
2

언제 사용하는가?

  • @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;
}
profile
꾸준히 나아가자 🐢

0개의 댓글