PostgreSQL은 'user'라는 데이터베이스 테이블 생성을 허용하지 않는 것 같습니다. 그러나 MySQL은 이러한 테이블을 생성 할 수 있습니다.
그것은 키워드이기 때문입니까? 그러나 Hibernate는 어떤 문제도 식별 할 수 없습니다 (PostgreSQLDialect를 설정하더라도).
PostgreSQL은 'user'라는 데이터베이스 테이블 생성을 허용하지 않는 것 같습니다. 그러나 MySQL은 이러한 테이블을 생성 할 수 있습니다.
그것은 키워드이기 때문입니까? 그러나 Hibernate는 어떤 문제도 식별 할 수 없습니다 (PostgreSQLDialect를 설정하더라도).
답변:
user
예약어이며 일반적으로 식별자 (테이블, 열)에 예약어를 사용하는 것은 좋지 않습니다.
그렇게 고집한다면 테이블 이름을 큰 따옴표로 묶어야합니다.
create table "user" (...);
그러나 테이블을 참조 할 때 항상 큰 따옴표를 사용해야합니다. 또한 테이블 이름은 대소 문자를 구분합니다. "user"
과 다른 테이블 이름 "User"
입니다.
많은 어려움을 겪고 싶다면 다른 이름을 사용하십시오. users
,, user_account
...
인용 식별자에 대한 자세한 내용은 http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS 설명서에서 확인할 수 있습니다 .
다음 구문으로 JPA로 테이블 이름을 지정할 수 있습니다.
@Table(name="\"user\"")
column user0_.id does not exist
같은 문제가 얼마 전에 있었는데 테이블 이름을 user
에서 app_user
. Hibernate / JPA 사용으로 인해. 이 방법이 더 쉬울 것이라고 생각했습니다. 이 작은 수정이 다른 사람에게 도움이되기를 바랍니다.