스파르타 부트캠프(spring)
[내일배움캠프_Spring] 자바 Spring 입문_예약어_230116
wkdwldP
2023. 1. 16. 22:56
팀프로젝트를 진행중 entity/Order을 작성 중 에러가 났다.
@MantToOne, @OneToMany 을 사용해서 그런가 아니면 @JoinColumn(name = "post_id"), @JoinColumn(name = "user_id")가 문제인지 계속 헤메고 있었는데 다른 팀원 한분이 @Entity(name = "order")을 발견하였다. @Entity(name = "orders")로 고치니 문제없이 실행되었다. 예약어에서 오류가 날 줄은 몰랐다. 필드 명을 예약어로 사용하지 말자!
@Entity(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
예약어란?
: 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어들.
- ex) return은 변수명이나 함수명으로 사용할 수 없다, 그런 단어들은 키워드이다.
SQL예약어
ADD AND BEFORE BY CALL CASE CONDITION DELETE DESC DESCRIBE FROM GROUP IN INDEX INSERT INTERVAL IS KEY LIKE LIMIT LOCK LONG MATCH NOT OPTION OR ORDER PARTITION RANK REFERENCES SELECT TABLE TO UPDATE WHERE 등등....
오류 발생 시 해결법...
@Column어노테이션을 사용하여 컬럼 이름을 직접 지정하는 방법 -> 따옴표로 감싸서 지정한다.
@Entity(name = "order")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name ="\"table\"")
private String table;
order ->에러 발생, table -> 에러 발생 X