BackEnd/JPA

[JPA] Unable to find column with logical name: child_name in org.hibernate.mapping.Table and its related supertables and secondary tables

샤아이인 2023. 2. 16.

1. 문제의 상황

RoleHierarchy라는 Entity에서 필드로 String childName을 가지고 있다.

또한 내가 알기로는 Spring이 알아서 저장할 때 camel case로 변환하여 저장해 주는 것으로 알고 있다.

 

하지만 다음과 같이 childName이라는 column을 찾을 수 없다는 오류에 직면하게 되었다.

이러한 문제가 발생한 이유는 바로 부모를 참조할 때 referencedColumnName으로 "child_name"을 지정해 줬기 때문이다.

원래는 referencedColumnName을 지정하지 않고, default로 설정하는 부모의 id값을 기본으로 사용하겠지만, 나의 코드에서는 Role의 이름이면 충분히 구별할 수 있었기 때문에 id를 저장할 필요가 없었다.

(id가 1인 Role.ADMIN이나 id가 3인 Role.ADMIN 은 동일한 Role이기 때문이다)

 

따라서 referencedColumnName을 지정해 줬었는데, 이점이 문제가 되었다...

 

2. 해결 방법

간단하다. @Column(name = "child_name")을 설정해 주면 된다!

 

힌트를 얻게 된 다음글 또한 도움이 될 수도 있다.

https://okky.kr/articles/1316818

 

OKKY - JPA PK가 아닌 필드 2개를 연관관계 조인컬럼으로 삼을 수 있나요?

아래 내용은 예시로 삼겠습니다.설정 테이블에 설정 로우넘버, 설정이름, 게시판 타입, 게시판 카테고리이렇게 있다고 하고게시판에 글을 쓸 때, 게시판 타입과 게시판 카테고리가 항상 입력되

okky.kr

 

댓글