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 ?