Repeated column in mapping for entity 에러 해결
2022. 4. 18. 00:25ㆍBackEnd(Java)/JPA 트러블 슈팅
프로젝트를 진행하면서 특정 엔티티에 동일한 엔티티 필드를 2개 이상 있는 경우가 생겼다.
아래 그림 1을 보면 Member 엔티티를 2개의 필드가 있다.(Member pt, Member writer)
처음에는 @JoinColumn의 name 속성을 연관관계가 있는 엔티티(Member)의 PK값의 @Column의 name값과 무조건 동일하게 설정해줘야 한다고 생각했다.(여기서는 MEMBER_ID)
하지만 그렇게 하면 아래 그림 2처럼 오류가 발생하게 된다.
@JoinColumn에 대해서 잘못 이해하고 있었고 제대로 이해하기 위해서 찾아보게 되었다.
@JoinColumn
- @joinColumn은 어노테이션이 붙은 필드의 엔티티를 추적해서 그 엔티티(Member)의 PK와 Join 시켜준다.
- @joinColumn은 연관관계의 주인인 엔티티가 가지게 되고 그 반대인 엔티티(Member)는 mappedBy를 사용하여 연관관계 설정을 한다.
- name 옵션 값은 꼭 @JoinColumn 어노테이션이 붙은 필드의 엔티티(Member)의 컬럼명과 꼭 동일하게 설정하지 않아도 된다. 즉, name 옵션은 해당 엔티티에서 외래 키 컬럼명을 만드는 설정이다. (DB에서 왜래키 컬럼명 설정하는 것과 같다.)
@JoinColumn에 대해서 이해한 후 아래 그림 3처럼 수정하고 서버를 시작하였다.
DB를 확인해보니 그림 4처럼 지정한 외래 키 컬럼 명의 필드가 들어가 있었다.
정리
JPA에 개념에 대해 충분히 인지하지 못한 상태에서 개발을 하다 보니 오류들이 반복되어 나오고 있다.
내 생각에는 JPA를 사용할 때는 연관관계가 제일 핵심이라고 생각한다. 그러니 연관관계에 대한 충분한 더 이해하고 개발을 해보자..😅😅
참고자료
반응형