PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

org.postgresql.util.PSQLException:ERRO:coluna user0_.id não existe - Hibernar


##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
  1. Não use letras maiúsculas no nome do database , schema , tables ou columns 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")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. 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|
+----------+-----------+----------+-----------+---------+
  1. para a diferença entre Dto e Entidade é uma boa prática usar Entity no final do nome de sua Entity, por exemplo, UserEntity