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