소개
게시글
질문&답변
2020.09.02
셀프로 양방향 연관관계 관련 질문입니다.
아! 저도 이해했습니다. 말씀해주신 것처럼 @JoinColumn의 referencedColumnName 의 default 속성을 보니 이해했습니다. 앞으로 어노테이션 관련 속성을 꼭 들어다 보겠습니다. 친절한 설명 감사합니다.^^ 수고하십시요
- 3
- 4
- 558
질문&답변
2020.09.01
셀프로 양방향 연관관계 관련 질문입니다.
친절한 답변 감사합니다..... 그런데, 제가 궁금한 부분은 아직 해결이 안된 듯 하여, 보충설명 적어놓았습니다..... 1. 작성 해주신 코드에다가 ID만 덧붙이면 아래와 같습니다. ParentCategory{ @Id @GeneratedValue @Column(name = "parent_id") private long id; @OneToMany(mappedBy = "parent") private List child = new ArrayList(); //연관관계의 거울 } ChildCategory { @Id @GeneratedValue @Column(name = "child_id") private long id; @ManyToOne @JoinColumn(name = "parent_id") private Category parent; //연관관계의 주인 } 2. 이렇게 Entity가 분리된 상태에서는 "ChildCategory의 @JoinColumn(name = "parent_id")에서 "parent_id" 이 코드는 ParentCategory의 @Column(name = "parent_id")를 맵핑하여 찾는다" 라고 쉽게 이해할 수 있습니다. 3. 그런데 Self로 연결하는 경우 public class Category { @Id @GeneratedValue @Column(name = "category_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id") // 1) 여기서 "parent_id"는 위와는 다르게 "parent_id" 가 명시적으로 작성해 놓은 곳이 없는데... // 2) 즉, 위와 다르게 JOIN 연결고리가 안보여서(혹은 제가 이해를 못한거 같긴합니다...) // 3) "category_id"로 연결해야 되는게 아닌지.... // 4) 아니면 네이밍룰이 별도로 있어서 그런건지... 그게 궁금했습니다.... private Category parent; @OneToMany(mappedBy = "parent") private List child = new ArrayList(); 감사합니다....
- 3
- 4
- 558