개발 무지렁이

[Error] Caused by: java.sql.SQLSyntaxErrorException: Table '[Table_name]' doesn't exist 본문

Backend/Error

[Error] Caused by: java.sql.SQLSyntaxErrorException: Table '[Table_name]' doesn't exist

Gaejirang-e 2023. 2. 14. 17:08

JPA는 스네이크케이스로 테이블 이름을 생성한다 (관례상)


    Caused by: java.sql.SQLSyntaxErrorException: Table 'fixed_spending' doesn't exist

Java는 엔티티를 만들 때, 관례상 [카멜케이스]를 사용한다.
JPA가 SQL을 생성할 때, Java의 [카멜케이스] 명명법을 [스네이크케이스] 명명법으로 변환해준다.
이전에는 문제가 없었는데 MYSQL 설정을 뭘 잘못 건드렸더니 갑자기 명명법 변환에 문제가 생겨보인다.

 ⭐ 해결방법1
@Entity(name="fixed_spending")

주로 엔티티 이름이 예약어일 때, 따로 이름을 붙여주는 방법인데,
Entity 어노테이션에 name속성을 붙여 직접 스네이크케이스로 이름을 지어준다.
(해결 x)

 ⭐ 해결방법2
[application.properties]
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

위의 설정은 JPA가 [카멜케이스 명명법]을 [스네이크케이스 명명법]으로 바꾸지 않는다.
(해결 0)

Comments