예를 들어 USER라는 대문자로 된 테이블을 만든 후,
Spring에서 @Entity(name="USER")로 명시해주었으나
아래와 같이 table을 찾지 못하는 문제가 발생했다.
Table 'DB명.테이블명' doesn't exist
Spring에서 Hibernate 기본 설정에 의해 대소문자를 구별하지 않아 발생하는 문제며,
yml 설정을 통해 테이블 수정 없이 인식 가능하다.
아래와 같이 명령어 입력 시
show variables like 'lower%';
하기와 같은 데이터를 확인할 수 있다.
lower_case_table_names이 0일 경우 대소문자를 구분, 1일 경우 구분하지 않는다.
0(대소문자 구분)으로 만들어졌을 경우
대문자 테이블의 경우 JPA에서 읽어올 수 없다.
spring:
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
위 설정을 해줄 경우 선언한 이름 그대로 인식하기 때문에
Hibernate의 카멜표기법 -> 스네이크표기법 으로 변환해주는 기능도 off 되었다.
❗❗ 써있는 그대로 인식하게 되었으니 정확하게 표기해주는 작업이 필요 ❗❗