88
99import org .hibernate .AssertionFailure ;
1010import org .hibernate .HibernateException ;
11+ import org .hibernate .Interceptor ;
1112import org .hibernate .ObjectDeletedException ;
1213import org .hibernate .StaleObjectStateException ;
1314import org .hibernate .WrongClassException ;
@@ -282,6 +283,7 @@ protected void entityIsTransient(MergeEvent event, Object id, MergeContext copyC
282283
283284 final Object entity = event .getEntity ();
284285 final EventSource session = event .getSession ();
286+ final Interceptor interceptor = session .getInterceptor ();
285287 final String entityName = event .getEntityName ();
286288 final EntityPersister persister = session .getEntityPersister ( entityName , entity );
287289 final String [] propertyNames = persister .getPropertyNames ();
@@ -294,7 +296,7 @@ protected void entityIsTransient(MergeEvent event, Object id, MergeContext copyC
294296 super .cascadeBeforeSave ( session , persister , entity , copyCache );
295297
296298 final Object [] sourceValues = persister .getValues ( entity );
297- session . getInterceptor () .preMerge ( entity , sourceValues , propertyNames , propertyTypes );
299+ interceptor .preMerge ( entity , sourceValues , propertyNames , propertyTypes );
298300 final Object [] copiedValues = TypeHelper .replace (
299301 sourceValues ,
300302 persister .getValues ( copy ),
@@ -326,7 +328,7 @@ protected void entityIsTransient(MergeEvent event, Object id, MergeContext copyC
326328 ForeignKeyDirection .TO_PARENT
327329 );
328330 persister .setValues ( copy , targetValues );
329- session . getInterceptor (). postMerge ( entity , copy , targetValues , null , propertyNames , propertyTypes );
331+ interceptor . postMerge ( entity , copy , id , targetValues , null , propertyNames , propertyTypes );
330332
331333 // saveTransientEntity has been called using a copy that contains empty collections
332334 // (copyValues uses ForeignKeyDirection.FROM_PARENT) then the PC may contain a wrong
@@ -341,9 +343,9 @@ protected void entityIsTransient(MergeEvent event, Object id, MergeContext copyC
341343 event .setResult ( copy );
342344
343345 if ( isPersistentAttributeInterceptable ( copy ) ) {
344- final PersistentAttributeInterceptor interceptor =
346+ final PersistentAttributeInterceptor attributeInterceptor =
345347 asPersistentAttributeInterceptable ( copy ).$$_hibernate_getInterceptor ();
346- if ( interceptor == null ) {
348+ if ( attributeInterceptor == null ) {
347349 persister .getBytecodeEnhancementMetadata ().injectInterceptor ( copy , id , session );
348350 }
349351 }
@@ -453,12 +455,13 @@ protected void entityIsDetached(MergeEvent event, Object copiedId, Object origin
453455 // copy created before we actually copy
454456 cascadeOnMerge ( session , persister , entity , copyCache );
455457
458+ final Interceptor interceptor = session .getInterceptor ();
456459 final String [] propertyNames = persister .getPropertyNames ();
457460 final Type [] propertyTypes = persister .getPropertyTypes ();
458461
459462 final Object [] sourceValues = persister .getValues ( entity );
460463 final Object [] originalValues = persister .getValues ( target );
461- session . getInterceptor () .preMerge ( entity , sourceValues , propertyNames , propertyTypes );
464+ interceptor .preMerge ( entity , sourceValues , propertyNames , propertyTypes );
462465 final Object [] targetValues = TypeHelper .replace (
463466 sourceValues ,
464467 originalValues ,
@@ -468,7 +471,7 @@ protected void entityIsDetached(MergeEvent event, Object copiedId, Object origin
468471 copyCache
469472 );
470473 persister .setValues ( target , targetValues );
471- session . getInterceptor (). postMerge ( entity , target , targetValues , originalValues , propertyNames , propertyTypes );
474+ interceptor . postMerge ( entity , target , id , targetValues , originalValues , propertyNames , propertyTypes );
472475 //copyValues works by reflection, so explicitly mark the entity instance dirty
473476 markInterceptorDirty ( entity , target );
474477 event .setResult ( result );
0 commit comments