Project/GASIP_대학 커뮤니티

[Gasip Project] 왜 Column Name이 중복이라고 뜨죠? _ DuplicateMappingException

이대코 2023. 11. 5. 23:22

오늘도 어김없이 찾아온 Error 메시지.(그만)

 

 

자세히 읽어보니 아래 친절히 알려주는 에러 메시지님.

Failed to initialize JPA EntityManagerFactory: Table [prof] contains physical column name [major_id] referred to by multiple logical column names: [major_ID], [majorId]

 

 

예?

 

아니 제가 뭘요...?

 

제가 한 설정이라곤

 

1. 테이블에 맞게 엔티티 클래스 생성

Major Entity

2. Major 테이블 : Prof(프로페서) 테이블 = 1 : 1 매핑

Prof 테이블이 major_ID를 FK로 갖고 있으므로, @OneToOne&@JoinColumn을 prof 테이블에 달아줬다.

prof Entity

난 잘못한게 없는뎅..? 

 

일단 문제 정의부터 해보자.

 

1. 문제 정의

Failed to initialize JPA EntityManagerFactory: Table [prof] contains physical column name [major_id] referred to by multiple logical column names: [major_ID], [majorId]

 

-> 이게 뭔말이냐하면, prof 테이블이 갖고 있는 칼럼 [major_id]를 참조하는 칼럼이 2개 있는데, 그게 [major_ID], [majorId]이다. 즉 한 개 칼럼을 지칭하는 칼럼이 2개이므로 겹친다.

 

2. 해결방안 접근

간단하다. 겹치는 곳을 찾아서 통일 시켜주면 된다.

 

근데 대체 어디가 겹쳤을까??

 

- 만약 prof 엔티티에서 내가 majorId를 매개변수 그대로 받았으면 문제가 됐겠지만, 지금은 이런 문제도 아니다.

- 그럼 다른 엔티티를 상속받은게 있나?? 그렇지도 않다.

 

어디가 문제일까 찾다보니

잡았다 요놈

아.. 그 professor랑 professorDetail이랑 도메인을 분리시켜놨었는데, 여기서 문제였다.

 

ProfessorDetail Entity 변경 후

 

겹쳤던 major_Id 부분을 엔티티 객체에서 바꿔줬다.

 

정상동작한다.

 

굿굿 나름 빠른 시간 내에 잘 해결했다.