인프런 커뮤니티 질문&답변

타노스님의 프로필 이미지
타노스

작성한 질문수

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

User Entity 생성 관련 질문입니다.

해결된 질문

작성

·

973

1

안녕하세요.

강의 덕분에 코틀린을 잘 배우고 있는 수강생 입니다.

다름이 아니라, 예저 소스에서 User Entity로 DB에 테이블을 생성하고 있는데,

제가 별도로 만든 프로젝트에서는 동일하게 User로 Entity 어노테이션을 붙이고 애플리케이션을 시작하면 에러가 발생하길래 에러 내용으로 찾아봤더니, User Entity를 user라는 이름으로 테이블을 생성하려고 하는데, user는 사용할 수 없는 이름이라는 것 같습니다(예약어)

예제 소스와 동일하게 설정을 했는데 제가 놓치고 있는 부분이 있는 걸까요?

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요! 타노스님 ㅎㅎㅎㅎ 아이고~~ 좋은 질문이십니다!!! 😊

혹시 환경을 비슷하게 구성하실 때 spring boot 버전을 2.7x를 사용하셨을까요?!!! 강의에서 사용하는 버전은 2.6.8 버전인데요! spring boot가 2.7.0으로 올라가면서 H2 버전이 1.4.200에서 2.1.120로 올라갔습니다! (관련 release note : https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes#h2-21)

가~장 최신 버전인 spring boot 2.7.3에서는 2.1.214를 사용하고 있고요!

H2가 1.x.x에서 2.x.x로 올라오면서 'user'라는 키워드가 예약어로 사용되어 생기는 이슈일 겁니다!

혹은 꼭 spring boot를 2.7.x로 올리지 않으셨더라도 h2가 2.x.x 버전인지 확인해보시면 좋을 것 같습니다!

만약, 위의 이슈로 인해 생기는 문제라면 3가지 해결책이 있습니다!!!

  1. @Table(name = "member") 어노테이션을 User Entity에 붙여 테이블 이름을 변경시킨다.

  2. h2 연결 url에 jdbc:h2:mem:library;NON_KEYWORDS=USER 와 같이 옵션을 넣어 USER가 예약어가 아님을 명시해준다

  3. H2 버전을 1.4.200 버전으로 내려 사용한다.

만약 원인이 H2 버전 차이에 따른 user 예약어였다면 셋 중 편하신 방법을 사용하실 경우 해결될 것으로 예상됩니다 ㅎㅎㅎㅎㅎ 한 번 간단히 확인해보시고 편하게 말씀해주세요~!!!!

또, 궁금한 점 있으시면 편하게 질문 부탁드리겠습니다! 🙏 감사합니다~ 😊

타노스님의 프로필 이미지
타노스
질문자

감사합니다!

타노스님의 프로필 이미지
타노스

작성한 질문수

질문하기