(Error Resovled) MappingException 과 @JoinColumn의 동작 방식

bagt13·2022년 9월 16일
0

JPA

목록 보기
3/13

테스트 코드 작성 도중 아래와 같은 에러를 만났다

구글링 해본 결과, Entity와 DB 테이블 간에 충돌로 인해 발생하는 에러였다.

예를 들어 Entity 설정이 DB 테이블 설정을 위반하거나, 해당 Entity를 DB 테이블로 생성할 수 없을때 발생한다.

에러 내용은 Record 엔티티에 id 컬럼이 반복되고 있으며, 해당 컬럼의 insert와 update 옵션을 false로 설정하라는 뜻이다.

시키는 대로 컬럼 옵션을 변경해 해결 할 수도 있지만, 근본적으로 @JoinColumn 설정에 문제가 있었다.


작성했던 Entity (Record)

Member와 Record는 일대다 관계이다.

JPA를 사용할 때 @JoinColumn의 name 속성에는 외래키가 되는 필드명을 적어준다고 생각했었고, Member 엔티티의 PK 컬럼명인 id를 입력했다.


@JoinColumn의 동작 방식

@JoinColumn은 해당 애노테이션이 붙은 필드의 엔티티를 추적해서 해당 엔티티의 PK를 join 시켜준다.

name 설정에 Member 엔티티의 PK 컬럼명인 id와 일치시켜야 하는 것이 아니다.

@JoinColumn의 name 설정 : Record 엔티티에서 외래키 컬럼명을 지정하는 설정인 것이다.


따라서 DB에 테이블이 insert 될 때 id 라는 컬럼이 두 개가 되어버린 것이다.


결과적으로 @JoinColumn의 name 속성을 변경하여 에러를 해결했다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글