##Solução
No PostgreSQL você tem que especificar o nome do esquema assim:
@Table(name="table_name", schema = "myapp")
^^^^^^^^^^^^^^^^
##Longa história
você obteve este erro:
org.postgresql.util.PSQLException: ERROR: column user0_.id does not exist
porque quando você cria um banco de dados no PostgreSQL , ele cria um esquema padrão chamado public , portanto, quando você não especificar o nome na
Entity
então o Hibernate irá verificar automaticamente no público esquema. ##Boas práticas
- Não use letras maiúsculas no nome do
database
,schema
,tables
oucolumns
no PostgreSQL . Caso contrário, você deve escapar esses nomes com aspas, e isso pode causar erros de sintaxe, então você pode usar :
@Table(name="table_name", schema = "schema_name")
^^^^^^^^^^ ^^^^^^^^^^^
- a palavra-chave USUÁRIO é uma palavra-chave reservada no PostgreSQL dê uma olhada em
+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003 | SQL:1999 | SQL-92 |
+----------+-----------+----------+-----------+---------+
| .... .... .... .... .... |
+----------+-----------+----------+-----------+---------+
| USER | reserved |reserved | reserved | reserved|
+----------+-----------+----------+-----------+---------+
- para a diferença entre Dto e Entidade é uma boa prática usar Entity no final do nome de sua Entity, por exemplo,
UserEntity