JPA @OneToOne, 일대일 매핑인데 데이터베이스에 일대다로 뜨는 이유?

서현서현·2024년 1월 24일
0

작은 실수들

목록 보기
19/19

엔티티를 짜던중 다음 코드에서 이해할수 없는 버그가 발견되었다.

@Entity
@Getter
public class ParkingInfo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="park_id")
    private Integer parkId;
    private String parkNo;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "allocation_id")
    private AllocationLog allocationlog;

}
@Entity @Getter
public class AllocationLog {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="allocation_id")
    private Long allocationId;

    @Column(name="park_no")
    private String parkNo;

    @Column(name="car_number")
    private String carNumber;

    //...
}

결론은 하나다. ParkinfInfo에서 AllocationLog 엔티티를 참조한다. AllocationLog에선 ParkingInfo를 참조하지 않기 때문에 위처럼 일대일 단방향 매핑을 사용해야한다.

그런데 이 간단한 관계에서 생성된 DB를 확인하면?

빠밤. 갑자기 일대다관계의 테이블이 생성된다;;;

그래서 열심히 찾아봤는데, 결론적으로 코드엔 이상이 없다. 오류가 날 이유가 없음....... 그래서 찾은 빛과같은 스택오버플로우의 자료!!

https://stackoverflow.com/questions/62378342/hibernate-create-onetomany-instead-of-onetoone

MySQL Workbench의 ReverseEngineer기능의 한계라고한다. 내가 짠 연관관계에는 문제가 없다고....
정말 다행이다...

0개의 댓글