[hibernate-dev] Snapshot conflict with merge
Max Rydahl Andersen
max.andersen at jboss.com
Mon Sep 25 03:15:49 EDT 2006
Hi,
The challenge is that both have merit.
The first one (dirty merge + dirty attached = exception) is more correct
from a consistency perspective.
The second one (dirty merge + dirty attached = dirty merge wins) wins is
(probably) usefull in many practical cases (and works like I think most
people thing merge works ...that you
are telling hibernate that the object to be merged in is the most correct
one).
As far as I remember from the last time we discussed it we considered
adding a MergeMode to
allow users to enable the "dirty merge wins" strategy.
The spec should list which one wins otherwise in this merge situations
otherwise merge's behavior is non-specfied across implementations which
will lead to alot of problems.
Have you tested it both in hibernate core and against entitymanager ? Do
they behave differently ?
/max
> I wrote (tested and verified with Gavin):
>
> Finally, merging doesn’t allow the following scenario, where two
> modifications conflict on one snapshot:
>
> item.getId() // The database identity is "1234"
> item.setDescription(...);
>
> Session session= sessionFactory.openSession();
> Transaction tx = session.beginTransaction();
>
> Item item2 = (Item) session.get(Item.class, new Long(1234));
> item2.setDescription(...); // Not allowed!
>
> return session.merge(item); // Throws exception!
>
> tx.commit();
> session.close();
>
> The detached object’s description is modified as well as the persistent
> object’s. There is no way for Hibernate to determine who will win in
> this situation and a StaleObjectStateException is thrown when you try to
> merge() onto a dirty persistent instance.
>
> Emmanuel comments:
>
> No exception is raised in my tests. The merged state takes precedence
> over the initially loaded and modified state (regardless the object has
> been versioned or not) AFAIR, the spec does not talk about such an
> exception either.
>
> What is it?
>
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
--
--
Max Rydahl Andersen
callto://max.rydahl.andersen
Hibernate
max at hibernate.org
http://hibernate.org
JBoss a division of Red Hat
max.andersen at jboss.com
More information about the hibernate-dev
mailing list