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 :

Erreurs de suppression


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 191
    Par défaut Erreurs de suppression
    j'ai écrit la methode suivante pour pouvoir supprimer des enregistrements de ma base donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public static void deleteVoiture(Integer id){
    		Session session=HibernateSessionFactory.currentSession();
    		Transaction tx=session.beginTransaction();
    		Voiture v=(Voiture)session.load(Voiture.class,id);
    		Person p=v.getPerson();
                              p.getVoitures().remove(v);
    		session.delete(v);
    		tx.commit();
    }
    Mais les erreurs suivantes se produisent :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
    	at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:92)
    	at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:78)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
    	at packVoiture.Service.deleteVoiture(Service.java:43)
    	at org.apache.jsp.SuppVoiture_jsp._jspService(org.apache.jsp.SuppVoiture_jsp:79)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Unknown Source)
    15:06:49,859 ERROR AbstractFlushingEventListener:277 - Could not synchronize database state with session
    org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
    	at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:92)
    	at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:78)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
    	at packVoiture.Service.deleteVoiture(Service.java:43)
    	at org.apache.jsp.SuppVoiture_jsp._jspService(org.apache.jsp.SuppVoiture_jsp:79)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Unknown Source)
    15:06:49,875 ERROR [jsp]:253 - "Servlet.service()" pour la servlet jsp a généré une exception
    org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
    	at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:92)
    	at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:78)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
    	at packVoiture.Service.deleteVoiture(Service.java:43)
    	at org.apache.jsp.SuppVoiture_jsp._jspService(org.apache.jsp.SuppVoiture_jsp:79)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Unknown Source)
    J'ai une relation un vers plusieurs entre les proprietaires (Person )et les voitures:
    voila mes fichiers de mapping :
    proprietaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <hibernate-mapping>
        <class name="packPerson.Person" table="personne">
            <id name="idp" column="IdPers">
                <generator class="increment"/>
            </id>
            <property name="nom" column="NomPers"/>
            <set name="voitures" cascade="all" inverse="true">
            	<key column="IdPers"/>
            	<one-to-many class="packVoiture.Voiture"/>
            </set>
        </class>
    </hibernate-mapping>
    voiture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <hibernate-mapping>
        <class name="packVoiture.Voiture" table="voiture">
            <id name="idv" column="IdVoiture">
                <generator class="increment"/>
            </id>
            <property name="marque" column="Marque"/>
            <many-to-one name="person" column="IdPers" not-null="true"/>
        </class>
    </hibernate-mapping>
    Est ce que quelqu'un peut m'aider ?

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 191
    Par défaut
    Toujours pas de propositions!!!

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 191
    Par défaut
    J'ajoute que mon application est une application web

  4. #4
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Le probleme viens du fait que tu essaye de supprimer un element qui a deja été détruit dans la base de donnée

    Apparement, ca arrive quand on fait un delete en cascade. En l'occurence, d'après ton fichier de config, tu déclares que le set voiture est en cascade all. Donc à priori si tu fais un remove de ton set, ca doit déjà détruire l'objet en base.

    A tester donc : essaye de te contenter de faire un remove sur ton set puis un commit.


    Et par pitié, mettez moi un try/catch autour de vos ouvertures de transactions pour les fermer proprement dans le finally ! Parce que sinon, si ca plante, vous avez une transaction qui reste ouverte...

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/11/2006, 16h13
  2. [VB.Net] Comment résoudre l'erreur si suppression dans la table maitre ?
    Par Alexandre` dans le forum Accès aux données
    Réponses: 1
    Dernier message: 26/08/2006, 15h51
  3. [C#]Pourquoi cette erreur à la suppression d'un repertoire ?
    Par prince_antonio dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2006, 17h47
  4. Erreur de suppression d'un élement
    Par Clad3 dans le forum C++
    Réponses: 1
    Dernier message: 05/06/2006, 21h41
  5. [VBA-E]Erreur sur suppression d'images dans excel
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 18/04/2006, 13h55

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