##Rozwiązanie
W PostgreSQL musisz podać nazwę schematu w następujący sposób:
@Table(name="table_name", schema = "myapp")
^^^^^^^^^^^^^^^^
##Długa historia
masz ten błąd :
org.postgresql.util.PSQLException: ERROR: column user0_.id does not exist
ponieważ podczas tworzenia bazy danych w PostgreSQL , tworzy domyślny schemat o nazwie public , więc jeśli nie określisz nazwy w Entity
następnie Hibernate sprawdzi automatycznie w publicznie schemat.
##Dobre praktyki
- Nie używaj wielkich liter w nazwie
database
,schema
,tables
lubcolumns
w PostgreSQL . W przeciwnym razie powinieneś zastąpić te nazwy cudzysłowami, co może powodować błędy składniowe, więc zamiast tego możesz użyć :
@Table(name="table_name", schema = "schema_name")
^^^^^^^^^^ ^^^^^^^^^^^
- słowo kluczowe USER jest zarezerwowanym słowem kluczowym w PostgreSQL spójrz na
+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003 | SQL:1999 | SQL-92 |
+----------+-----------+----------+-----------+---------+
| .... .... .... .... .... |
+----------+-----------+----------+-----------+---------+
| USER | reserved |reserved | reserved | reserved|
+----------+-----------+----------+-----------+---------+
- do różnicy między Dto i Podmiot dobrą praktyką jest używanie Entity na końcu nazwy twojego Entity, na przykład
UserEntity