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 :

Exception sur mise à jour d'éléments en cascade


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut Exception sur mise à jour d'éléments en cascade
    Bonjour,
    J'ai, dans mon modèle, trois objets qui se référencent en chaine (Person a un set de Child qui lui même a un set de Element).
    J'utilise cascade="all,delete-orphan" pour me simplifier les ajouts et mises à jour.
    Seulement, lorsque j'ajoute un nouvel élément Child avec des éléments dans le set d'Element, hibernate lève l'exception ci-dessous.

    J'ai essayé plusieurs choses (sauver le Child et flusher la session avant d'ajouter les Element dans le set) mais rien n'y fait.

    Y-a-t'il une manière particulière de gérer ce genre de problèmes?

    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
    org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
    	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
    	at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:92)
    	at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
    	at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:222)
    	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2229)
    	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2665)
    	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:60)
    	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
    	at $Proxy0.flush(Unknown Source)
    	at org.myapp.tests.hibernate.model.PersonManager.createAndStoreEvent(PersonManager.java:54)
    	at org.myapp.tests.hibernate.model.PersonManager.main(PersonManager.java:21)
    Caused by: java.sql.BatchUpdateException: failed batch
    	at org.hsqldb.jdbc.jdbcStatement.executeBatch(Unknown Source)
    	at org.hsqldb.jdbc.jdbcPreparedStatement.executeBatch(Unknown Source)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
    	... 20 more

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    J'ai un peu investigué sur le problème et il semble que ça dépende du nombre d'enregistrements à ajouter... Autrement dit, si j'ajoute moins de 10 éléments, tout fonctionne. Mais si j'en ajoute plus, j'obtient l'exception ci-dessus sur le flush.
    Quelqu'un aurait il une idée de ce qui se passe?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Bon, j'ai finalement changé de SGBD: je suis passé du embedded HSQLDB à MySQL en version client/serveur. Du coup, j'obtient de vrai messages d'erreur (ceux de HSQLDB sont même inexistants!). Et en plus, je peux aller interroger la base pour voir la structure des tables et leurs contraintes.
    J'ai donc trouvé qu'il me créait une contrainte sur la clé primaire, j'ai changé mon mapping et tout marche!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  2. [Hibernate] mise à jour des éléments des détails
    Par neuromencien dans le forum Hibernate
    Réponses: 9
    Dernier message: 16/02/2007, 14h47
  3. Message erreur sur Mise à jour formulaire
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 06/10/2006, 08h52
  4. Erreur sur mise à jour
    Par Smint dans le forum Access
    Réponses: 10
    Dernier message: 01/07/2006, 15h29
  5. Question sur mise à jour automatique
    Par Al soltani dans le forum Access
    Réponses: 2
    Dernier message: 03/03/2006, 11h51

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