Dev

[jpa] 주요키를 공유하는 일대일 단방향 연관

Ryan Woo 2019. 3. 5. 22:03

5. [jpa] 주요키 공유 일대일 단방향 연관

public class Traveler {

@Id
private String email;
private String name;
}
public class TravelerBestSight {

@Id
private String email;
private String title;
private String description;

@OneToOne
@PrimaryKeyJoinColumn
private Traveler traveler;
}
@Test
public void 주요키를공유하는일대일단방향테스트() {
String email = "ryan@naver.com";

// Traveler 생성
Traveler traveler = Traveler.builder()
.email(email)
.name("Ryan")
.build();
travelerRepository.save(traveler);

// TravelerBestSight 생성
TravelerBestSight travelerBestSight = TravelerBestSight.builder()
.email(traveler.getEmail())
.title("lake luise")
.description("very very good")
.traveler(traveler)
.build();
travelerBestSightRepository.save(travelerBestSight);

// 아우터 조인이 걸려 조회된다.
Optional<TravelerBestSight> byId = travelerBestSightRepository.findById(email);
assertThat(byId.get().getTraveler().getEmail()).isEqualTo(email);
}

TravelerBestSight 생성 이전에 Traveler 가 미리 생성되어 있어야 한다.