(STS) JPA 테이블 생성 오류.

Wonjun Lee·2024년 3월 21일
0

예외 유형

CommandAcceptanceException

원인

JPA의 @Entity 어노테이션을 이용해 테이블을 생성할 때, 클래스 이름이 그대로 테이블 이름이 되며 DDL이 생성된다.

이 에러는 JPA만의 문제가 아니라 자동 생성되는 SQL을 DBMS에서 실행하는 것 자체에 문제가 생긴다.

나는 User라는 이름의 엔티티를 만들려고 했으나 User는 데이터베이스 객체를 나타내는 예약어이기 때문에 식별자로 사용할 수가 없었다.

즉, 위 예외는 실행하려는 CREATE 문에 사용 불가능한 식별자가 있을 경우 발생하게 된다.

해결

퍼블릭 클래스의 이름을 변경하여 해결하였다.

추가)

@GeneratedValue 어노테이션을 사용하면 별도로 값을 입력하지 않아도 알아서 1씩 증가하며 값이 저장된다. 나는 이 기능이 테이블에 존재하는 값에 따라 조정되는 줄 알았다. (예를 들면, 이미 2까지 튜플을 생성했더라도 delete 를 수행해 모두 삭제하면 다시 1부터 시작)

하지만 가장 마지막에 출력된 수로부터 증가했다. 이는 시퀀스를 사용할 때와 유사한듯 한다. 따라서 이런 특징에 유의해야한다.

0개의 댓글