##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
- Non utilizzare lettere maiuscole nel nome del
database
,schema
,tables
ocolumns
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")
^^^^^^^^^^ ^^^^^^^^^^^
- 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|
+----------+-----------+----------+-----------+---------+
- alla differenza tra Dto e Entità è buona norma usare Entity alla fine del nome della tua Entity, ad esempio
UserEntity