Tampaknya PostgreSQL tidak mengizinkan untuk membuat tabel database bernama 'user'. Tetapi MySQL akan memungkinkan untuk membuat tabel seperti itu.
Apakah karena itu kata kuncinya? Tetapi Hibernate tidak dapat mengidentifikasi masalah apa pun (bahkan jika kami mengatur PostgreSQLDialect).
Jawaban:
user
adalah kata yang dicadangkan dan biasanya bukan ide yang baik menggunakan kata yang dicadangkan untuk pengenal (tabel, kolom).Jika Anda bersikeras melakukan itu, Anda harus memberi nama tabel dalam tanda kutip ganda:
create table "user" (...);
Tapi kemudian Anda selalu perlu menggunakan tanda kutip ganda saat mereferensikan tabel. Selain itu, nama tabel peka huruf besar-kecil.
"user"
adalah nama tabel yang berbeda dari"User"
.Jika Anda ingin menyelamatkan diri dari banyak masalah gunakan nama yang berbeda.
users
,,user_account
...Rincian lebih lanjut tentang pengenal yang dikutip dapat ditemukan di manual: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
sumber
Dimungkinkan untuk menentukan nama tab dengan JPA dengan sintaks berikutnya:
sumber
column user0_.id does not exist
Kami mengalami masalah yang sama beberapa waktu lalu, dan kami baru saja mengubah nama tabel dari
user
menjadiapp_user
. Karena penggunaan Hibernate / JPA. Kami pikir akan lebih mudah seperti ini. Semoga perbaikan kecil ini akan membantu orang lain.sumber
Seseorang dapat membuat tabel
user
dalam skema selainpublic
. Contoh:CREATE SCHEMA my_schema; CREATE TABLE my_schema.user(...);
sumber