[hibernate-commits] Hibernate SVN: r14015 - core/trunk/core/src/main/java/org/hibernate/event/def.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Sep 20 17:58:28 EDT 2007


Author: cbredesen
Date: 2007-09-20 17:58:27 -0400 (Thu, 20 Sep 2007)
New Revision: 14015

Modified:
   core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java
Log:
HHH-2816 avoid re-selecting state for READ_ONLY in checkNaturalId

Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java	2007-09-20 15:13:34 UTC (rev 14014)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEntityEventListener.java	2007-09-20 21:58:27 UTC (rev 14015)
@@ -68,12 +68,12 @@
 
 	private void checkNaturalId(
 			EntityPersister persister,
-	        Serializable identifier,
+	        EntityEntry entry,
 	        Object[] current,
 	        Object[] loaded,
 	        EntityMode entityMode,
 	        SessionImplementor session) {
-		if ( persister.hasNaturalIdentifier() ) {
+		if ( persister.hasNaturalIdentifier() && entry.getStatus() != Status.READ_ONLY ) {
  			Object[] snapshot = null;			
 			Type[] types = persister.getPropertyTypes();
 			int[] props = persister.getNaturalIdentifierProperties();
@@ -84,7 +84,7 @@
  					Object loadedVal;
  					if ( loaded == null ) {
  						if ( snapshot == null) {
- 							snapshot = session.getPersistenceContext().getNaturalIdSnapshot( identifier, persister );
+ 							snapshot = session.getPersistenceContext().getNaturalIdSnapshot( entry.getId(), persister );
  						}
  						loadedVal = snapshot[i];
  					} else {
@@ -166,7 +166,7 @@
 			// grab its current state
 			values = persister.getPropertyValues( entity, entityMode );
 
-			checkNaturalId( persister, entry.getId(), values, loadedState, entityMode, session );
+			checkNaturalId( persister, entry, values, loadedState, entityMode, session );
 		}
 		return values;
 	}




More information about the hibernate-commits mailing list