🔥 문제 발생 상황
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL
"create table user (id integer not null, join_date timestamp, name varchar(255),
password varchar(255), ssn varchar(255), primary key (id))" via JDBC Statement
🦠 문제 원인 파악
해당 에러는 이미 데이터베이스의 예약어가 존재하여 발생하는 에러이다.
🔑 문제 해결
나와 같은 경우는 예약어로 사용되는 User를 entity 이름으로 사용하여 문제가 발생했으며, 아래와 같이 entity 이름을 Users로 지정해줌으로 해당 문제를 해결하였다.
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Users")
public class User { }
아니면 다음과 같이 아예 도메인 클래스의 이름을 예약어가 아닌 것으로 바꿔 해결할 수 있다.
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Users { }
entity 이름 뿐만 아니라 컬럼으로 사용할 변수명이 예약어로 되어 있어도 이와 같은 DDL 오류가 발생한다.
따라서 JPA를 사용하는 entity에서 예약어를 고려하여 잘 설계하도록 하자.