코딩못하는사람

JPA 중복 칼럼 에러 본문

issue 기록

JPA 중복 칼럼 에러

공부절대안함 2021. 4. 18. 02:57

 

JPA를 공부하기 위해 미니 프로젝트를 진행할 때

선물 엔티티에 구매한 회원,받은 회원으로 회원 외래키를 단방향으로 두개 참조해야 하는 구조였다.

 

 

 

 

 

 

 

 

 

 

JPA 공부할 때 @JoinColumn에는 매핑할 외래키 이름으로 name설정을 해줘야 한다는 기억으로 단순하게 다음과 같이 코드를 작성했었다.

하지만 바~로 에러가 발생했다.

Repeated column in mapping for entity: gifticon.giticonshop.domain.Gift column: member_id

should be mapped with insert="false" update="false" 읽기 전용으로 바꿔서 뻘짓도 했지만

DB에 JPA로 생기는 테이블을 ddl-auto: create 모드로 설정해주고 반복해서 이름을 바꿔보면서 column들을 관찰했다.

 

그결과 @JoinColumn 어노테이션이 칼럼명을 만드는 방법과 외래키 Join해주는 방법을 확실히 알게 되었다.

JoinColumn은 어노테이션이 붙은 필드의 엔티티를 추적해서 그 엔티티의 PK를 Join 시켜준다.

 

name 설정에  member어노테이션의 PK id 칼럼명 "member_id"와 딱 맞아야 하는게 아니였다.

name은 내 엔티티에서 외래키 칼럼명을 만들어주는 설정이였던 것이다.

 

Member가 하나였으면 식별하기 쉽게 member_id로 하는게 맞지만 다음과 같은 경우는

name값을 두개 각각 다르게 설정해주거나 작성해주지 않고

"기본값인 필드명+_+참조하는 외래키의 기본키 칼럼명"을 따르면

BUY_MEMBER_MEMBER_ID, GET_MEMBER_MEMBER_ID로 설정되어 연관관계 매핑이 가능했다.

 

 

 

 

 

 

 

 

 

 

 

 

배운점

하나의 엔티티에서 같은 엔티티를 두개 이상 참조할때 방법

연관관계 매핑시 JoinColumn의 동작방법 및 Column생성 방식

 

Comments