IT/JPA
대상 테이블에 외래 키
WsCode
2022. 6. 19. 13:32
이번에는 대상 테이블에 외래 키가 있는 1 : 1 관계를 알아보겠습니다.
1 : 1 관계 중 대상 테이블에 외래 키가 있는 단방향 관계는 JPA에서 지원하지 않습니다.
그리고 이런 모양으로 매핑할 수 있는방법도 없습니다.
이때 단방향 관계를 LOCKER에서 MEMBER 방향으로 수정하거나,
양방향 관계로 만들고 LOCKER를 연관관계의 주인으로 설정해야 합니다.
참고로 JPA2.0 부터 1 : N 단방향 관계에서 대상 테이블에 외래 키가 있는 매핑을 허용했습니다.
하지만 1 : 1 단방향은 이런 매핑을 허용하지 않습니다.
@Entity
public class Member {
@Id @GeneratedValue
@Column(name="MEMBER_ID")
private Long id;
private String username;
@OneToOne(mappedBy = "member")
private Locker locker;
// Getter, Setter...
}
@Entity
public class Locker {
@Id
@GeneratedValue
@Column(name = "LOCKER_ID")
private Long id;
private String name;
@OneToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;
}
1 : 1 매핑에서 대상 테이블에 외래 키를 두고싶으면 이렇게 양방향으로 매핑합니다.
주엔티티인 Member에서 대상 엔티티인 LOCKER를 연관관계의 주인으로 만들어서 LOCKER테이블에 외래 키를 관리하도록 했습니다.