| I have studied up on deleting objects in "Hibernate In Action" and it seems simple enough.  Yet, I am having a few issues.  Basically, what it boils down to is that I will remove a RegistrationSession object from a set inside a Registration object but when it comes time to update the Registration object the deleted RegistrationSession object in the set does not get deleted.  It instead gets updated.
 Do I need to make sure the object being delete does not have anything depending on it?  Do all objects that it references need to be dereferenced or  made null?
 
 Nothing that I try seems to work.  I have a feeling that it could be a setting somewhere in my mapping documents but not sure.
 
 Any help greatly appreciated.
 
 Cheers
 Tom
 
 Hibernate version: The one that ships with JBoss 4.0.3.  I think its now version 3 but not sure.
 
 Mapping documents:
 
 Registration
 
 <class name="com.camp.common.registration.Registration" table="tblRegistration">
 
 <cache usage="read-write"/>
 
 <id name="registrationID" type="integer">
 <column name="id_registration" sql-type="integer" not-null="true"/>
 <generator class="sequence">
 <param name="sequence">tblregistration_id_registration_seq</param>
 </generator>
 </id>
 
 <set name="regSessions" table="tblRegSession" sort="com.camp.common.registration.RegistrationSessionComparator" order-by="id_reg_session asc" cascade="all-delete-orphan" inverse="true">
 <cache usage="read-write"/>
 <key column="fk_id_registration"/>
 <one-to-many class="com.camp.common.registration.RegistrationSession"/>
 </set>
 
 </class>
 
 RegistrationSession
 
 <class name="com.camp.common.registration.RegistrationSession" table="tblRegSession">
 
 <cache usage="read-write"/>
 
 <id name="regSessionID" type="integer">
 <column name="id_reg_session" sql-type="integer" not-null="true"/>
 <generator class="sequence">
 <param name="sequence">tblregsession_id_reg_session_seq</param>
 </generator>
 </id>
 
 <many-to-one name="registration" column="fk_id_registration" class="com.camp.common.registration.Registration" not-null="true"/>
 
 <many-to-one name="cabin" column="fk_id_cabin" class="com.camp.common.cabin.Cabin" not-null="true"/>
 
 <many-to-one name="session" column="fk_id_session" class="com.camp.common.session.Session" not-null="true"/>
 
 </class>
 
 Do I need to remove all references to registration, cabin and session?
 
 Code between sessionFactory.openSession() and session.close():
 This is the code that I originally had which I thought would work to delete the RegistrationSession but its not working.
 
 reg_session = (RegistrationSession) registration.getRegistrationSession(i);
 reg_session.setCabin(null);
 reg_session.setSession(null);
 regSessions.remove(reg_session);
 hib_session.update(registration);
 
 Full stack trace of any exception that occurs:
 
 I think this error happens because I am manually trying to delete the RegistrationSession objects and then updating the Registration and thats when things go haywire!!
 
 org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 1 actual row count: 0 expecte
 d: 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:137)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:28
 4)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:736)
 at com.camp.server.entity.EntityBackEnd.modifyEntities(Unknown Source)
 at com.camp.helpers.entity.EntityHelper.modifyEntities(Unknown Source)
 at com.camp.actions.registration.updateRegistrationSessionsAction.execute(Unknown Source)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at com.camp.common.utilities.HibernateFilter.doFilter(Unknown Source)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
 
 Name and version of the database you are using:
 Postgres 8.0.4
 
 The generated SQL (show_sql=true):
 10:15:08,525 INFO  [STDOUT] Hibernate: update tblRegSession set fk_id_registration=?, fk_id_cabin=?, fk_id_session=?, us
 er_entered=? where id_reg_session=?
 10:15:08,525 INFO  [STDOUT] Hibernate: update tblRegSession set fk_id_registration=?, fk_id_cabin=?, fk_id_session=?, us
 er_entered=? where id_reg_session=?
 
 
 |