IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

[Hibernate] exception SQLGrammarException


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut [Hibernate] exception SQLGrammarException
    Debutant sous hibernate, j'essaie de faire un test de base pour me familiariser avec le framework.
    Travaillant sous eclipse et apres bien des déboires avec Hibernate tools, j'ai réussi a obtenir quelque chose de convenable avec hibernate synchroniser (et a la main )

    Seulement voila j'obtiens une exception bien étrange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not fetch initial value for increment generator
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:107)
        at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:44)
        at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:91)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
        at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
        at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
        at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
        at Test.main(Test.java:18)
    Caused by: org.postgresql.util.PSQLException: ERROR: column "id" does not exist
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:430)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:346)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:250)
        at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:85)
        ... 11 more
    14:21:38,614  WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState: 42703
    14:21:38,614 ERROR JDBCExceptionReporter:72 - ERROR: column "id" does not exist
    D'apres ce que je comprend, il ne trouve pas la colonne id dans ma table user de la base de données (postgreSQL), mais je vous affirme qu'elle existe bien cette colonne.

    Avez vous une idée du probleme qui se pose ici ?

    PS : ci joint mon fichier de mapping de la classe en cause
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 82
    Par défaut
    pourrais-tu donner le script de création de ta base?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Ouep, alors vu que ce n'est qu'un petit test pas de script a proprement parler mais simplement 2 tables de creer avec pgAdmin

    la table User :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE "User"
    (
      id int2 NOT NULL,
      nom varchar(20) NOT NULL,
      CONSTRAINT "User_pkey" PRIMARY KEY (id)
    ) 
    WITHOUT OIDS;
    ALTER TABLE "User" OWNER TO postgres;
    la table Fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE "Fichiers"
    (
      id int2 NOT NULL,
      "nomFic" varchar(50) NOT NULL,
      "idUser" int2,
      CONSTRAINT "Fichiers_pkey" PRIMARY KEY (id),
      CONSTRAINT "Fichiers_idUser_fkey" FOREIGN KEY ("idUser")
          REFERENCES "User" (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    ) 
    WITHOUT OIDS;
    ALTER TABLE "Fichiers" OWNER TO postgres;
    Sachant que coté Java, pour le moment je ne m'occupe que des User (chaque chose en son tps).

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Par défaut
    Bonjour,

    le id introuvable est peut être celui de la table fichier.

    La classe java fichier est elle correcte ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Euh c'est a dire que pour le moment, je ne me suis pas occupé des Fichiers, il n'y a donc pas de classe fichiers (je viens de tester, même avec la classe fichiers et le mapping correspondant l'erreur est toujours la)

    Je rajoute une interrogation : pourquoi je me fait jeter si je met un id generator sequence alors que postgres et censé le gérer ?

    Voila voila toujours la même erreur selon lui la colonne id n'existe pas ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Par défaut
    ajoute la visualization des traces sql dans Hibernate

    <property name="hibernate.show_sql">true</property>

    tu pourras ainsi récupérer la requete SQL qui pose probleme.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Up du matin, chagrin ...

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Par défaut
    Bonjour,

    ton code et ton mapping me paraissent pourtant corrects.

    par contre dans les traces on trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into User (nom, id) values (Maurice, 11)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into User (nom, id) values ('Maurice', 11)
    mais peut être est ce du aux traces et ce n'est pas ce qui est réellement envoyé au SGBD.

    Dans le cas contraire c'est surement un problème de driver ou de configuration Hibernate.

    Au fait as tu essayé de lire des informations en base plutôt que d'écrire ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Par défaut
    Bonjour,

    ton code et ton mapping me paraissent pourtant corrects.

    par contre dans les traces on trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into User (nom, id) values (Maurice, 11)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into User (nom, id) values ('Maurice', 11)
    mais peut être est ce du aux traces et ce n'est pas ce qui est réellement envoyé au SGBD.

    Dans le cas contraire c'est surement un problème de driver ou de configuration Hibernate.

    Au fait as tu essayé de lire des informations en base plutôt que d'écrire ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Merci de ton aide Pietra, c'est bon j'ai solutionné le problème, même que ce que j'avais fais depuis le début ne contenait pas d'erreur. L'erreur venait seulement du fait qu' une table qui s'appelle user n'est pas bien apprécié par postgres, je l'ais renommé utilisateur et ca marche

    Je me permet une petite interrogation supplementaire, voila pour les besoins d'un projet, mes identifiant doivent être bien specifique (une sequence aleatoire de 8 chiffres). Savait vous comment cela est implementable avec hibernate :
    - Puis-je donner l'id de mon choix à la creation de l'objet et donc simplement insérer le champs id comme un autre champs ?
    - Faut t'il absoluement passer par un id generator et a ce moment existe t'il un id correspondant à mon desir, ou puis je définir mon propre id generator ?

    Si les 2 sont possibles, quel est selon vous le plus élégant (programmer élégant, une obsession )

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Par défaut
    J'ai un problème très similaire il est expliqué en détails ici:
    http://www.developpez.net/forums/sho...47#post2278147

    Mais j'ai l'impression que les requètes généré ne comporte pas de " ni de ' ce qui génère des erreur postgres.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/09/2007, 22h50
  2. Réponses: 3
    Dernier message: 19/01/2006, 14h49
  3. [Hibernate] Exception bizarre NoSuchElementException
    Par lilou77 dans le forum Hibernate
    Réponses: 3
    Dernier message: 17/01/2006, 15h44
  4. [Hibernate] exception entre MySQL et MS SQL
    Par lilou77 dans le forum Hibernate
    Réponses: 7
    Dernier message: 13/01/2006, 11h52
  5. [Hibernate exception]
    Par agougeon dans le forum Hibernate
    Réponses: 7
    Dernier message: 08/01/2006, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo