JPA 와 MySQL 을 연동하여 사용하는 경우, 카멜표기법으로 컬럼 이름을 지정할 시에 컬럼명이
helloData -> hello_data 와 같은 형태로 자동 변경되어 버리는 문제가 발생한다.
(카멜 표기법이란 각 단어의 첫문자를 대문자로 표기하고 붙여쓰되, 맨처음 문자는 소문자로 표기하는 표기법이다.)
나도 이 문제 때문에 DB와 맵핑이 되지 않아서 애를 먹었다.. 내가 설정한 컬럼명은 prkplceNo 인데 prkplce_no 으로
자동 변경되어 에러가 발생했다.
에러가 발생하는 과정을 먼저 보여주겠다.
DTO 에 내가 지정한 이름으로 컬럼명을 작성한다.
테이블에도 @Column 어노테이션의 name 이랑 같게 컬럼명을 입력했다.
겉보기엔 아무 문제가 없을 것 같다. 하지만 문제는 이 프로그이 실행될 때 발생한다.
앞에서 설명했던 대로 대문자를 _소문자 형태로 바꿔버린다.
이렇게 되면 위와 같이 DB의 테이블과 컬럼이 매핑이 되지 않는 오류가 발생한다.
이때는 application.properties 에 Naming Strategy를 아래와 같이 작성하여 문제를 해결할 수 있다.
# 언더바 자동변경 방지
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
application.yml 을 사용하는 경우엔 아래와 같이 입력하면 된다.
spring:
jpa:
hibernate:
naming:
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
이 글이 같은 문제를 겪는 사람에게 도움이 되었으면 좋겠다.
(본인은 구글링을 아직 잘 못해서 3일만에 해결했습니다..)
'BackEnd > Spring' 카테고리의 다른 글
[SpringBoot] 스프링 파일 사이즈 제한 오류 - FileSizeLimitExceededException (2) | 2021.12.30 |
---|---|
[SpringBoot] @RestController 로 Rest API 구축하기! (2) | 2021.12.22 |
[SpringBoot] @EnableScheduling - 스프링 스케쥴러로 Cron 작업 돌리기 (0) | 2021.12.22 |
[SpringBoot] 스프링부트 / 인텔리제이 서버 포트 변경하기! (1) | 2021.12.15 |
[SpringBoot] 프로젝트 간편 생성 방법 (start.spring.io) (0) | 2021.12.03 |