Es scheint, dass PostgreSQL es nicht erlaubt, eine Datenbanktabelle mit dem Namen 'user' zu erstellen. Mit MySQL kann eine solche Tabelle erstellt werden.
Ist das, weil es ein Schlüsselwort ist? Hibernate kann jedoch kein Problem identifizieren (selbst wenn wir PostgreSQLDialect festlegen).
Antworten:
user
ist ein reserviertes Wort und es ist normalerweise keine gute Idee, reservierte Wörter für Bezeichner (Tabellen, Spalten) zu verwenden.Wenn Sie darauf bestehen, müssen Sie den Tabellennamen in doppelte Anführungszeichen setzen:
Dann müssen Sie jedoch immer doppelte Anführungszeichen verwenden, wenn Sie auf die Tabelle verweisen. Zusätzlich unterscheidet der Tabellenname dann zwischen Groß- und Kleinschreibung.
"user"
ist ein anderer Tabellenname als"User"
.Wenn Sie sich viel Ärger ersparen möchten, verwenden Sie einen anderen Namen.
users
,user_account
, ...Weitere Details zu den angegebenen Bezeichnern finden Sie im Handbuch: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
quelle
Es ist möglich, Tabellennamen mit JPA mit der nächsten Syntax anzugeben:
quelle
column user0_.id does not exist
Wir hatten vor einiger Zeit dasselbe Problem und haben gerade den Tabellennamen von
user
in geändertapp_user
. Aufgrund der Verwendung von Hibernate / JPA. Wir dachten, es wäre auf diese Weise einfacher. Hoffe, diese kleine Lösung wird jemand anderem helfen.quelle
Man kann eine
user
andere Tabelle im Schema als erstellenpublic
. Das Beispiel:quelle