raycon / til

Today I Learned
MIT License
16 stars 3 forks source link

JPA 컬럼으로 MySQL 키워드, 예약어 사용하는 방법 #63

Open raycon opened 3 years ago

raycon commented 3 years ago

MySQL 8.0 Keywords and Reserved Words 를 보면 여러가지 키워드와 예약어가 있다.

기존의 DB에 있던 default, order 컬럼을 JPA로 매핑하기 위해서 다음과 같이 작성하면 H2 데이터베이스 생성시에 오류가 발생한다.

@Column(name = "order")
private int order;

해결 방법 1 - 따옴표로 감싸기

이 경우 name 값을 "\"order\"" 로 지정하면 오류가 발생하지 않는다.

@Column(name = "\"order\"")
private int order;

해결 방법 2 - 하이버네이트 설정 사용

hibernate.globally_quoted_identifiers 옵션을 true로 설정해서 전체 테이블과 컬럼에 인용부호를 적용하도록 한다.

Spring Data JPA 사용시에 application.yml에 다음과 같이 설정한다.

spring.jpa.properties.hibernate.globally_quoted_identifiers=true
raycon commented 3 years ago

https://stackoverflow.com/questions/2224503/how-to-map-an-entity-field-whose-name-is-a-reserved-word-in-jpa