PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

org.postgresql.util.PSQLException:FEHLER:Spalte user0_.id existiert nicht - Hibernate

##Lösung

In PostgreSQL Sie müssen den Namen des Schemas wie folgt angeben:

@Table(name="table_name", schema = "myapp")
                          ^^^^^^^^^^^^^^^^

##Lange Geschichte

Sie haben diesen Fehler:

org.postgresql.util.PSQLException: ERROR: column user0_.id does not exist

denn wenn Sie eine Datenbank in PostgreSQL erstellen , erstellt es ein Standardschema namens public , also wenn Sie den Namen nicht in Entity angeben dann wird Hibernate automatisch im öffentlichen Bereich nachsehen Schema.

##Gute Praktiken

  1. Verwenden Sie keine Großbuchstaben im Namen der database , schema , tables oder columns in PostgreSQL . Andernfalls sollten Sie diese Namen mit Anführungszeichen maskieren, was zu Syntaxfehlern führen kann, also können Sie stattdessen :
  2. verwenden

@Table(name="table_name", schema = "schema_name")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. das Schlüsselwort USER ist ein reserviertes Schlüsselwort in PostgreSQL sehen Sie sich an

+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003  | SQL:1999  | SQL-92  |
+----------+-----------+----------+-----------+---------+
|  ....        ....       ....       ....       ....    |
+----------+-----------+----------+-----------+---------+
| USER     |  reserved |reserved  | reserved  | reserved|
+----------+-----------+----------+-----------+---------+
  1. to Unterschied zwischen Dto und Entität Es empfiehlt sich, Entity am Ende des Namens Ihrer Entität zu verwenden, zum Beispiel UserEntity