In general I would suggest inverse=true for bidirectional mappings.
I have been unable to get the same error, though. Could you show both classes and their mappings? /G 2013/12/28 Daniel Ricardo Castro Alvarado <[email protected]> > (I'm sending my post again because the previous one was not showing after > some days) > > Hello everyone, > > I'm making a test method for an application and I'm having trouble getting > it to work correctly. > > In my model, one Case has many Specimen (but one Specimen is associated > with only one Case). > I'm trying to add one Case with some Specimens to the database and then > removing the Specimens (but not deleting the Case), but somehow I get > StaleStateException and I can't figure why. > > Case.Specimens is mapped as a One to many collection with inverse="false" > and cascade="all-delete-orphan". The relationship is bidirectional (i.e. > each Specimen has a reference to the Case), though I don't think that's > relevant. > > using (var session = > DatabaseSetUpFixture.SessionFactory.OpenSession()) > using (var tx = session.BeginTransaction()) > { > Case original = AddSampleCase(session); > > original.Specimens = new List<Specimen>() { > CreateSampleSpecimen() > }; > > session.Flush(); // Save the changes > session.Clear(); // Evict all entities from the session > > Case newVersion = session.Get<Case>(original.Id); // Get > the DB version > newVersion.Specimens.Clear(); // Remove all the specimens > > session.Update(newVersion); > session.Flush(); // StaleStateException here :S > > // ... > > tx.Rollback(); // Leave the test DB untouched > } > } > > I need to use the same session so I can rollback all the changes made (as > this is a test method). > If I comment "newVersion.Specimens.Clear();" the test ends normally (but I > need that line, of course), and I don't understand why (even if I change > some attributes of the Case) > > The stack trace is included below: > > en > NHibernate.AdoNet.Expectations.BasicExpectation.VerifyOutcomeNonBatched(Int32 > rowCount, IDbCommand statement) en > p:\nhibernate-core\src\NHibernate\AdoNet\Expectations.cs:línea 29 > en NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation > expectation) en > p:\nhibernate-core\src\NHibernate\AdoNet\NonBatchingBatcher.cs:línea 41 > en NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object id, > Object version, Int32 j, Object obj, SqlCommandInfo sql, > ISessionImplementor session, Object[] loadedState) en > p:\nhibernate-core\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:línea > 2919 > en NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object id, > Object version, Object obj, ISessionImplementor session) en > p:\nhibernate-core\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:línea > 3102 > en NHibernate.Action.EntityDeleteAction.Execute() en > p:\nhibernate-core\src\NHibernate\Action\EntityDeleteAction.cs:línea 70 > en NHibernate.Engine.ActionQueue.Execute(IExecutable executable) en > p:\nhibernate-core\src\NHibernate\Engine\ActionQueue.cs:línea 136 > en NHibernate.Engine.ActionQueue.ExecuteActions(IList list) en > p:\nhibernate-core\src\NHibernate\Engine\ActionQueue.cs:línea 126 > en NHibernate.Engine.ActionQueue.ExecuteActions() en > p:\nhibernate-core\src\NHibernate\Engine\ActionQueue.cs:línea 174 > en > NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource > session) en > p:\nhibernate-core\src\NHibernate\Event\Default\AbstractFlushingEventListener.cs:línea > 249 > en NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent > event) en > p:\nhibernate-core\src\NHibernate\Event\Default\DefaultFlushEventListener.cs:línea > 19 > en NHibernate.Impl.SessionImpl.Flush() en > p:\nhibernate-core\src\NHibernate\Impl\SessionImpl.cs:línea 1509 > > So, what is causing StaleStateException? > > Thank you very much > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/groups/opt_out.
