[hibernate-commits] Hibernate SVN: r14180 - core/trunk/testsuite/src/test/java/org/hibernate/test/ops.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Nov 2 12:11:05 EDT 2007


Author: steve.ebersole at 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();




More information about the hibernate-commits mailing list