Author: steve.ebersole(a)jboss.com
Date: 2007-11-02 12:11:05 -0400 (Fri, 02 Nov 2007)
New Revision: 14180
Modified:
core/trunk/testsuite/src/test/java/org/hibernate/test/ops/MergeTest.java
Log:
added test for stale merging
Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/ops/MergeTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/ops/MergeTest.java 2007-11-02
14:46:53 UTC (rev 14179)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/ops/MergeTest.java 2007-11-02
16:11:05 UTC (rev 14180)
@@ -11,6 +11,7 @@
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.NonUniqueObjectException;
+import org.hibernate.StaleObjectStateException;
import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
import org.hibernate.criterion.Projections;
@@ -27,6 +28,39 @@
return new FunctionalTestClassTestSuite( MergeTest.class );
}
+ public void testMergeStaleVersionFails() throws Exception {
+ Session s = openSession();
+ s.beginTransaction();
+ VersionedEntity entity = new VersionedEntity( "entity", "entity"
);
+ s.persist( entity );
+ s.getTransaction().commit();
+ s.close();
+
+ // make the detached 'entity' reference stale...
+ s = openSession();
+ s.beginTransaction();
+ VersionedEntity entity2 = ( VersionedEntity ) s.get( VersionedEntity.class,
entity.getId() );
+ entity2.setName( "entity-name" );
+ s.getTransaction().commit();
+ s.close();
+
+ // now try to reattch it
+ s = openSession();
+ s.beginTransaction();
+ try {
+ s.merge( entity );
+ s.getTransaction().commit();
+ fail( "was expecting staleness error" );
+ }
+ catch ( StaleObjectStateException expected ) {
+ // expected outcome...
+ }
+ finally {
+ s.getTransaction().rollback();
+ s.close();
+ }
+ }
+
public void testMergeBidiPrimayKeyOneToOne() throws Exception {
Session s = openSession();
s.beginTransaction();
Show replies by date