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 :

Erreur "could not fetch initial value for increment generator" [Mapping]


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Erreur "could not fetch initial value for increment generator"
    Salut tout le monde,

    Bon voilà j'ai un problème que je n'arrive pas à résoudre malgré les recherches que j'ai mené.
    Lorsque j’exécute j'ai une jolie console toute rouge pleine d'exception:

    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
    31
    32
    33
    34
     
    Hibernate: select max(id) from EP.Contact
    Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not fetch initial value for increment generator
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    	at org.hibernate.id.IncrementGenerator.initializePreviousValueHolder(IncrementGenerator.java:147)
    	at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:67)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
    	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
    	at Default_package.Test.main(Test.java:22)
    Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
     
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:452)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:400)
    	at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:884)
    	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:471)
    	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:199)
    	at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:535)
    	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:238)
    	at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:1196)
    	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1444)
    	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1662)
    	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4364)
    	at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4445)
    	at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:6268)
    	at org.hibernate.id.IncrementGenerator.initializePreviousValueHolder(IncrementGenerator.java:127)
    	... 11 more
    Notez le: Hibernate: select max(id) from EP.Contact au début de la console. Et je ne comprend pas pourquoi il met "EP.Contact" alors que mon schéma c'est TEST_DB.


    hibernate-3.6.0, Eclipse, Oracle 11gExpress

    Merci d'avance,

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Je suis parvenu à avancer grâce à ce lien:
    http://stackoverflow.com/questions/1...-oracle-schema

    Il s'agit de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <id name="Id" type="integer">
     <column name="id" sql-type="int"/>
    <generator class="increment"/>
     </id>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <id name="Id" type="integer">
     <column name="id" sql-type="int"/>
    <generator class="increment">
        <param name="schema">TEST_DB</param>
    </generator>
     </id>
    Au fait, je viens de comprendre que avec ce cette manière, il a pu trouver le schéma contenant ma table (qu'est TEST_DB au lieu du EP).

    Après ça, j'ai eu un autre lot d’exception que voici:

    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
     
    Hibernate: select max(id) from TEST_DB.Contact
    Hibernate: insert into EP.Contact (nom, prenom, age, id) values (?, ?, ?, ?)
    Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
    	at Default_package.Test.main(Test.java:31)
    Caused by: java.sql.BatchUpdateException: ORA-00942: table or view does not exist
     
    	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:17660)
    	at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:771)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
    	... 8 more
    Maintenant c'est la ligne suivante qui m’inquiète:

    Hibernate: insert into EP.Contact (nom, prenom, age, id) values (?, ?, ?, ?)

    Car je vois ré-aparaitre le EP devant Contact. Mais notez qu'il n'y a plus ce problème dans la ère ligne avec le ID.

    Dois-je faire la même chose avec les autres colonnes, si oui comment ?
    Par ce que je ne sais pas comment le faire.

    Merci d'avance,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Résolu
    Salut,

    Bonne nouvelle, problème résolu grâce à:http://docs.jboss.org/hibernate/orm/...l/mapping.html

    La documentation quoi... ééOui, parfois quand il n'y a plus de réponse à un problème, il reste toujours la doc... et elle, elle ne ment jamais.

    Il s'agissait de reseigner le parametre "schema" dans la balise "hibernate-mapping"

    Donc au lieu que sa soit juste <hibernate-mapping>
    j'ai mis [COLOR="rgb(46, 139, 87)"]<hibernate-mapping schema="TEST_DB">[/COLOR]

    Maintenant biensure, plus besoin de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <id name="Id" type="integer">
     <column name="id" sql-type="int"/>
    <generator class="increment">
        <param name="schema">TEST_DB</param>
    </generator>
     </id>
    On se contetra de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <id name="Id" type="integer">
     <column name="id" sql-type="int"/>
    <generator class="increment"/>
     </id>
    Puisque on a renseigner le schéma dans la balise hibernate-mapping qui englobe la balise id.

    Merci comme même à tous,
    Et j’espère que cette solution profitera aux d'autres.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/08/2011, 13h30
  2. [phpBB] Could not get theme data for themes_id
    Par leech2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/09/2007, 15h18
  3. Réponses: 1
    Dernier message: 22/11/2006, 12h21
  4. Réponses: 1
    Dernier message: 12/07/2006, 11h26

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