반응형
@Entity
@Getter
@Setter
public class Order {
@Id
@GeneratedValue
private Long id;
@Column
private String username;
@Column
private String payStatus;
}
Order라는 Entity 객체를 매핑하여 테스트를 돌렸을 시 아래와 같은 오류가 발생했습니다.
알아보니 이러한 오류가 발생한 문제는 다음과 같습니다.
오류 원인
Hibernate 는 JPA 엔티티 클래스를 보고 데이터베이스 테이블을 자동 생성해 줍니다.
만약 엔티티 클래스의 이름이 Item 이라면 Item이라는 테이블을 생성해줍니다.
그런데 여기서 문제가 있습니다.
데이터베이스 키워드/예약어(ORDER, GROUP, SELECT, WHERE 등)와 테이블이 이름이 같다면 정상적으로 실행되지 않는 것입니다.
즉, 엔티티 클래스의 이름은 Order인데 정렬하는 키워드인 Order가 테이블명으로 생성되었기 때문에 이러한 오류가 발생했습니다.
해결 방법
엔티티 클래스명을 변경하거나 @Table 어노테이션을 사용해 테이블이름을 지정해주는 방법이 있습니다.
@Entity
@Table(name = "orders")
@Getter
@Setter
public class Order {
...
}
추가로 주의 할점
엔티티의 필드명(Column) 또한 데이터베이스 키워드/예약어와 같아선 안됩니다.
DB 테이블을 설계할 때 Table의 Column명 또한 SQL 예약어를 사용하지 않도록 주의 합시다.
'◼ Error 모음' 카테고리의 다른 글
[Vue.js] vue create 파일 로드 오류 (Window) (0) | 2023.05.25 |
---|---|
[intellij] finished with non-zero exit value 1 오류 (0) | 2023.05.08 |
java: warning: source release 17 requires target release 17 (0) | 2023.04.12 |
Servlet으로 접속시 HTTP 404 에러 해결 방법 (0) | 2023.03.09 |
Spring Security 기본 로그인 화면 제거하는 간단한 방법 (2) | 2023.03.08 |