Saltar al contenido

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

Posterior a de nuestra prolongada selección de datos solucionamos este asunto que suelen tener muchos lectores. Te ofrecemos la solución y nuestro deseo es servirte de mucha apoyo.

Solución:

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 postgresqlcrea un esquema predeterminado llamado públicopor lo que cuando no especifica el nombre en el Entity entonces Hibernate comprobará automáticamente en el público esquema.


Buenas practicas

  1. No use letras mayúsculas en el nombre de 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 = "schame_name")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. la palabra clave USUARIO es una palabra clave reservada en postgresqlecha un vistazo a

+----------+-----------+----------+-----------+---------+
| 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

Para las personas que obtienen esta excepción, en postgres. Cada vez que escriba una clase de entidad, intente asociarla con el esquema correcto (donde está presente su tabla), así:

@Entity
@Table(name = "user", schema = "users_details")
public class User implements Serializable

    @Column(name = "id")
    Long id;    //long is not recommended

   // Other data

Como ha dicho @YCF_L No use letras Mayúsculas en un nombre de tabla o columna, de lo contrario obtendrá esta excepción.

Esta convención se vuelve más importante cuando hay un escenario en el que tienes que generar automáticamente las tablas de las clases de entidad o viceversa.

Aquí puedes ver las reseñas y valoraciones de los usuarios

Si te gusta la programación, tienes el poder dejar un enunciado acerca de qué le añadirías a esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *