PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

org.postgresql.util.PSQLException:ERRORE:la colonna user0_.id non esiste - Ibernazione

##Soluzione

In PostgreSQL devi specificare il nome dello schema in questo modo:

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

##Una lunga storia

hai ricevuto questo errore :

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

perché quando crei un database in PostgreSQL , crea uno schema predefinito denominato pubblico , quindi quando non specifichi il nome in Entity quindi Hibernate verificherà automaticamente nel pubblico schema.

##Buone pratiche

  1. Non utilizzare lettere maiuscole nel nome del database , schema , tables o columns in PostgreSQL . Altrimenti dovresti evitare questi nomi tra virgolette, e questo può causare errori di sintassi, quindi puoi invece usare :

@Table(name="table_name", schema = "schema_name")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. la parola chiave UTENTE è una parola chiave riservata in PostgreSQL dai un'occhiata a

+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003  | SQL:1999  | SQL-92  |
+----------+-----------+----------+-----------+---------+
|  ....        ....       ....       ....       ....    |
+----------+-----------+----------+-----------+---------+
| USER     |  reserved |reserved  | reserved  | reserved|
+----------+-----------+----------+-----------+---------+
  1. alla differenza tra Dto e Entità è buona norma usare Entity alla fine del nome della tua Entity, ad esempio UserEntity