twocowsong

대상 테이블에 외래 키 본문

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테이블에 외래 키를 관리하도록 했습니다.

 

 

 

 

'IT > JPA' 카테고리의 다른 글

다 대 다 : 단방향  (0) 2022.06.21
다 대 다 [N : N]  (0) 2022.06.20
주 테이블 외래 키  (0) 2022.06.19
일 대 일 [ 1 : 1 ]  (0) 2022.06.18
일 대 다 양방향  (0) 2022.06.14