From 94cb6b82b5314184ecde67ae3f819a1ee932edf9 Mon Sep 17 00:00:00 2001 From: Guenther Demetz Date: Wed, 2 May 2012 14:55:00 +0200 Subject: [PATCH] HHH-7245 --- .../internal/DefaultLoadEventListener.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultLoadEventListener.java b/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultLoadEventListener.java index 6fdaa32ee3..9229b2a4a0 100644 --- a/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultLoadEventListener.java +++ b/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultLoadEventListener.java @@ -410,14 +410,24 @@ protected Object doLoad( entity = loadFromSecondLevelCache(event, persister, options); if ( entity != null ) { if ( traceEnabled ) LOG.tracev( "Resolved object in second-level cache: {0}", - MessageHelper.infoString( persister, event.getEntityId(), event.getSession().getFactory() ) ); - return entity; + MessageHelper.infoString( persister, event.getEntityId(), event.getSession().getFactory() ) ); + } + else { + if ( traceEnabled ) LOG.tracev( "Object not resolved in any cache: {0}", + MessageHelper.infoString( persister, event.getEntityId(), event.getSession().getFactory() ) ); + entity = loadFromDatasource(event, persister, keyToLoad, options); + } + + if (entity != null && persister.hasNaturalIdentifier()) { + event.getSession().getPersistenceContext().getNaturalIdHelper().cacheNaturalIdCrossReferenceFromLoad( + persister, + event.getEntityId(), + event.getSession().getPersistenceContext().getNaturalIdHelper().extractNaturalIdValues( entity, persister ) + ); } - if ( traceEnabled ) LOG.tracev( "Object not resolved in any cache: {0}", - MessageHelper.infoString( persister, event.getEntityId(), event.getSession().getFactory() ) ); - return loadFromDatasource(event, persister, keyToLoad, options); + return entity; } /** @@ -443,14 +453,6 @@ protected Object loadFromDatasource( source ); - if (entity != null && persister.hasNaturalIdentifier()) { - event.getSession().getPersistenceContext().getNaturalIdHelper().cacheNaturalIdCrossReferenceFromLoad( - persister, - event.getEntityId(), - source.getPersistenceContext().getNaturalIdHelper().extractNaturalIdValues( entity, persister ) - ); - } - if ( event.isAssociationFetch() && source.getFactory().getStatistics().isStatisticsEnabled() ) { source.getFactory().getStatisticsImplementor().fetchEntity( event.getEntityClassName() ); }