엔티티를 짜던중 다음 코드에서 이해할수 없는 버그가 발견되었다.
@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기능의 한계라고한다. 내가 짠 연관관계에는 문제가 없다고....
정말 다행이다...