null ); final Object cachedItem = entityDataAccess.get( (SharedSessionContractImplementor) s, cacheKey ); assertNotNull( cachedItem ); assertTyping( StandardCacheEntryImpl.class, cachedItem );
@Override public Object initializeLazyProperty(String fieldName, Object entity, SharedSessionContractImplementor session) throws HibernateException { final Serializable id = session.getContextEntityIdentifier( entity ); final EntityEntry entry = session.getPersistenceContext().getEntry( entity ); if ( entry == null ) { throw new HibernateException( "entity is not associated with the session: " + id ); } if ( log.isTraceEnabled() ) { log.trace( "initializing lazy properties of: " + MessageHelper.infoString( this, id, getFactory() ) + ", field access: " + fieldName ); } if ( hasCache() ) { Object cacheKey = getCacheAccessStrategy().generateCacheKey( id, this, session.getFactory(), session.getTenantIdentifier() ); Object ce = getCacheAccessStrategy().get( session, cacheKey ); if ( ce != null ) { CacheEntry cacheEntry = (CacheEntry) getCacheEntryStructure().destructure( ce, getFactory() ); final Object initializedValue = initializeLazyPropertiesFromCache( fieldName, entity, session, entry, cacheEntry ); // NOTE EARLY EXIT!!! return initializedValue; } } return initializeLazyPropertiesFromDatastore( fieldName, entity, session, id, entry ); }