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 :

Hibernate3.0 - Postgresql - Séquence : problème de requête


Sujet :

Hibernate Java

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Par défaut Hibernate3.0 - Postgresql - Séquence : problème de requête
    Bonjour,

    mon problème se situe au niveau de la requête générée par hibernate pour récupérer la valeur suivante de la séquence.

    J'utilise postgresql8.3 et hibernate3.

    Voici le morceau de la sortie qui pose problème je pense:
    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
    28
    29
    30
    Hibernate: select next value for t_book_b_id_seq from dual_t_book_b_id_seq
    Aug 17, 2008 7:10:04 PM org.hibernate.util.JDBCExceptionReporter logExceptions
    WARNING: SQL Error: 0, SQLState: 42601
    Aug 17, 2008 7:10:04 PM org.hibernate.util.JDBCExceptionReporter logExceptions
    SEVERE: ERROR: syntax error at or near "value"
    Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value
            at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
            at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
            at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
            at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
            at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
            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:535)
            at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
            at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
            at testspring.model.dao.BookDAO.createBook(BookDAO.java:25)
            at testspring.test.Main.main(Main.java:15)
    Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "value"
            at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
            at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
            at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
            at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
            ... 11 more
    Java Result: 1
    En effet, la réquête est fausse mais je ne sais pas comment lui spécifier une autre requête ...
    Il doit falloir spécifier la version de postgres qu'on utilise ou quelque chose de ce genre non ?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par bit_o Voir le message
    Bonjour,

    mon problème se situe au niveau de la requête générée par hibernate pour récupérer la valeur suivante de la séquence.

    J'utilise postgresql8.3 et hibernate3.

    Voici le morceau de la sortie qui pose problème je pense:
    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
    28
    29
    30
    Hibernate: select next value for t_book_b_id_seq from dual_t_book_b_id_seq
    Aug 17, 2008 7:10:04 PM org.hibernate.util.JDBCExceptionReporter logExceptions
    WARNING: SQL Error: 0, SQLState: 42601
    Aug 17, 2008 7:10:04 PM org.hibernate.util.JDBCExceptionReporter logExceptions
    SEVERE: ERROR: syntax error at or near "value"
    Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get next sequence value
            at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
            at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
            at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
            at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
            at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
            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:535)
            at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
            at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
            at testspring.model.dao.BookDAO.createBook(BookDAO.java:25)
            at testspring.test.Main.main(Main.java:15)
    Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "value"
            at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
            at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
            at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
            at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
            ... 11 more
    Java Result: 1
    En effet, la réquête est fausse mais je ne sais pas comment lui spécifier une autre requête ...
    Il doit falloir spécifier la version de postgres qu'on utilise ou quelque chose de ce genre non ?
    native query :

    "select nextval('sequence_name')"

    hql

    "select next value for sequence_name"

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Par défaut
    merci beaucoup ça marche parfaitement

    En revanche, je me trouve devant un nouveau problème ...
    Voici la requête d'insertion qui est générée par Hibernate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.BatchUpdateException: Batch entry 0 insert into t_book (b_title, b_isbn, b_edition_house, b_edition_year, b_ctime, b_id) values (Titre 1, 123456-ryrt-ftyt, Eyrolles, 2006, NULL, 4) was aborted.
    J'ai bien essayé de mettre des back-quotes autour des noms de colonnes de ma table dans mon fichier de configuration, mais rien n'y fait .. Je ne comprends pas bien pourquoi hibernate ne comprend pas qu'il faut ajouter des quotes ?

    Voici le fichier de mapping que j'utilise :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class table="t_book" name="testspring.model.Book">
            <id column="b_id" name="id" type="int">
                <generator class="sequence">
                    <param name="sequence">t_book_b_id_seq</param>
                </generator>
            </id>
            <property column="b_title" name="title" type="java.lang.String" length="250" not-null="true"/>
            <property column="b_isbn" name="isbn" type="java.lang.String" length="100" not-null="true"/>
            <property column="b_edition_house" name="editionHouse" type="java.lang.String" length="200"/>
            <property column="b_edition_year" name="editionYear" type="java.lang.String" length="20"/>
            <property column="b_ctime" name="creationTime" type="java.sql.Timestamp"/>
        </class>
    </hibernate-mapping>
    Merci pour votre aide

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Par défaut
    bon je ne sais pas bien pourquoi, mais ça semble marcher ..
    je n'ai rien changé sur mon fichier de configuration en fait!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2013, 09h46
  2. [PostgreSQL] problème de requête sur une base postgresql
    Par DiverSIG dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/12/2009, 08h18
  3. Problème de requête en PHP avec postgreSQL
    Par Kira07 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 29/05/2007, 22h52
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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