sql >> Base de Datos >  >> RDS >> PostgreSQL

org.postgresql.util.PSQLException:ERROR:la columna user0_.id no existe - Hibernate

##Solución

En PostgreSQL tienes que especificar el nombre del esquema así:

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

##Larga historia

tienes este error:

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

porque cuando creas una base de datos en PostgreSQL , crea un esquema predeterminado llamado público , por lo que cuando no especifica el nombre en la Entity entonces Hibernate verificará automáticamente en el público esquema.

##Buenas prácticas

  1. No use letras mayúsculas en el nombre de la database , schema , tables o columns en PostgreSQL . De lo contrario, debe escapar estos nombres con comillas, y esto puede causar errores de sintaxis, por lo que en su lugar puede usar:

@Table(name="table_name", schema = "schema_name")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. la palabra clave USUARIO es una palabra clave reservada en PostgreSQL echar un vistazo

+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003  | SQL:1999  | SQL-92  |
+----------+-----------+----------+-----------+---------+
|  ....        ....       ....       ....       ....    |
+----------+-----------+----------+-----------+---------+
| USER     |  reserved |reserved  | reserved  | reserved|
+----------+-----------+----------+-----------+---------+
  1. a la diferencia entre Dto y Entidad es una buena práctica usar Entity al final del nombre de su Entidad, por ejemplo, UserEntity