1명의 입주민이 1개의 주차공간을 사용한다고 가정 했을 때 1:1관계가 된다.
Person Entity가 number을 PK로 가지고 있고 ParkingLot이 Person의 Number을 FK로 참조하며 PK로 삼는다.
Person Entity
@Builder
@Entity
@Table(name = "PERSON")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long number;
@Column(name = "AGE")
private Long age;
@Column(name = "NAME")
private String name;
@OneToOne(mappedBy = "person")
@PrimaryKeyJoinColumn
private ParkingLot parkingLot;
}
ParkingLot Entity
@Builder
@Entity
@Table(name = "PARKING_LOT")
public class ParkingLot {
@Id
@Column(name = "NUMBER")
private Long number;
@OneToOne
@MapsId
@JoinColumn(name = "NUMBER", referencedColumnName = "NUMBER")
private Person person;
@Column(name = "AREA")
private String area;
}
insert 방법
Person person = personRepository.save(
Person.builder()
.name("홍길동")
.age(20)
.build()
);
ParkingLot parkingLot = parkingLotRepository.save(
ParkingLot.builder()
.person(person)
.area("A")
.build()
);