일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTTP3
- 멱등활용
- Invalid bound statement (not found)
- KAKAOLOGINAPI
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 김영한JPA
- 자바ORM표준프로그래밍
- SpringBoot
- fixedDelay
- initialDelay
- hibernate.dialect
- Transaction not successfully started
- 네이버 연결된 서비스
- 매핑정보가없는필드
- org.apache.ibatis.binding.BindingException
- HTTPMESSAGE
- anyMatch
- @Table
- @Entity
- JPA
- gitreset
- Git
- DB방언
- 캐쉬가능
- 네이버로그인API
- 데이터베이스 방언
- http
- RFC723x
- 무상태프로토콜
- gitrevert
Archives
- Today
- Total
twocowsong
대상 테이블에 외래 키 본문
이번에는 대상 테이블에 외래 키가 있는 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 |