티스토리 뷰

반응형

group은 보통 예약어 (SELECT 쿼리에서 사용하는 GROUP BY와 같은 키워드같은 녀석, 변수명으로 쓸 수 없어요)로 정의가 되어 있어 Oracle, MySQL 문법을 사용하는 개발자들이 컬럼명으로 사용하면 에러가 납니다. 

 

1. 틸트 문자열로 감싸준다 

틸트 문자열은 숫자 1 옆에 있는 쉬프트를 누르면 물결을 써줄수 있는 (`) 이녀석을 틸트 문자열이라고 합니다. 그래서 보통 이 문자열로 감싸주면 group 이건 order 이건 where 이건 다 감싸주게 됩니다.

@Column(name = "`group`")
private String group;

 

2. properties 설정을 해준다

spring.jpa.properties.hibernate.globally_quoted_identifiers=true 값을 넣어주면 위에 틸트 문자열로 묶은 것과 같은 효과를 냅니다. 하지만 이는 전체 컬럼명 뿐 아니라 테이블 명에도 붙게됩니다.

 

아래의 글에서 참조를 많이 했습니다. 

https://madplay.github.io/post/how-to-escape-a-column-name-with-spring-data-jpa

 

Spring Data JPA를 사용할 때 필드 이름이 데이터베이스의 예약어와 같아서 문법 오류가 발생한다면?

JPA의 엔티티 클래스 또는 필드 이름이 order, group과 같은 데이터베이스의 예약어와 동일하여 문법 오류가 발생하는 경우에는 어떻게 해야 할까?

madplay.github.io

 

반응형
댓글
공지사항