PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

org.postgresql.util.PSQLException :ERREUR :la colonne user0_.id n'existe pas - Hibernate

##Solution

Dans PostgreSQL vous devez spécifier le nom du schéma comme ceci :

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

##Longue histoire

vous avez cette erreur :

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

car lorsque vous créez une base de données dans PostgreSQL , il crée un schéma par défaut nommé public , donc lorsque vous ne spécifiez pas le nom dans le Entity alors Hibernate vérifiera automatiquement dans le public schéma.

##Bonnes pratiques

  1. N'utilisez pas de majuscules dans le nom de la database , schema , tables ou columns dans PostgreSQL . Sinon, vous devriez échapper ces noms avec des guillemets, et cela peut provoquer des erreurs de syntaxe, donc à la place, vous pouvez utiliser :

@Table(name="table_name", schema = "schema_name")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. le mot-clé USER est un mot clé réservé dans PostgreSQL regardez

+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003  | SQL:1999  | SQL-92  |
+----------+-----------+----------+-----------+---------+
|  ....        ....       ....       ....       ....    |
+----------+-----------+----------+-----------+---------+
| USER     |  reserved |reserved  | reserved  | reserved|
+----------+-----------+----------+-----------+---------+
  1. à la différence entre Dto et Entité sa bonne pratique est d'utiliser Entity à la fin du nom de votre Entity par exemple UserEntity