[JPA] FK를 PK로 갖는 Entity

1348 단어 JavaJPAJPA

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 = "NUMBSER")
    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()
);

좋은 웹페이지 즐겨찾기