Skip to content

Commit

Permalink
HSEARCH-3896 Recreate projection orm hit-mapper at each query invoke
Browse files Browse the repository at this point in the history
  • Loading branch information
fax4ever authored and yrodiere committed Apr 23, 2020
1 parent 9ea9ae8 commit 69d403c
Showing 1 changed file with 12 additions and 11 deletions.
Expand Up @@ -10,9 +10,11 @@
import java.util.Set;

import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.search.engine.backend.common.spi.DocumentReferenceConverter;
import org.hibernate.search.engine.search.loading.context.spi.LoadingContext;
import org.hibernate.search.engine.search.loading.context.spi.LoadingContextBuilder;
import org.hibernate.search.engine.search.loading.spi.DefaultProjectionHitMapper;
import org.hibernate.search.engine.search.loading.spi.EntityLoader;
import org.hibernate.search.engine.search.loading.spi.ProjectionHitMapper;
import org.hibernate.search.mapper.orm.logging.impl.Log;
import org.hibernate.search.mapper.orm.search.loading.EntityLoadingCacheLookupStrategy;
Expand All @@ -30,16 +32,17 @@ public final class HibernateOrmLoadingContext<E> implements LoadingContext<Entit
private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() );

private final SessionImplementor sessionImplementor;

private final ProjectionHitMapper<EntityReference, E> projectionHitMapper;

private final DocumentReferenceConverter<EntityReference> referenceHitMapper;
private final EntityLoader<EntityReference, ? extends E> entityLoader;
private final MutableEntityLoadingOptions loadingOptions;

private HibernateOrmLoadingContext(SessionImplementor sessionImplementor,
ProjectionHitMapper<EntityReference, E> projectionHitMapper,
DocumentReferenceConverter<EntityReference> referenceHitMapper,
EntityLoader<EntityReference, ? extends E> entityLoader,
MutableEntityLoadingOptions loadingOptions) {
this.sessionImplementor = sessionImplementor;
this.projectionHitMapper = projectionHitMapper;
this.referenceHitMapper = referenceHitMapper;
this.entityLoader = entityLoader;
this.loadingOptions = loadingOptions;
}

Expand All @@ -52,7 +55,7 @@ public ProjectionHitMapper<EntityReference, E> getProjectionHitMapper() {
throw log.hibernateSessionIsClosed( e );
}

return projectionHitMapper;
return new DefaultProjectionHitMapper<>( referenceHitMapper, entityLoader );
}

public SessionImplementor getSessionImplementor() {
Expand Down Expand Up @@ -96,13 +99,11 @@ public SearchLoadingOptionsStep cacheLookupStrategy(EntityLoadingCacheLookupStra

@Override
public LoadingContext<EntityReference, E> build() {
ProjectionHitMapper<EntityReference, E> projectionHitMapper = new DefaultProjectionHitMapper<>(
sessionContext.getReferenceHitMapper(),
entityLoaderBuilder.build( loadingOptions )
);
DocumentReferenceConverter<EntityReference> referenceHitMapper = sessionContext.getReferenceHitMapper();
EntityLoader<EntityReference, ? extends E> entityLoader = entityLoaderBuilder.build( loadingOptions );
return new HibernateOrmLoadingContext<>(
sessionContext.getSession(),
projectionHitMapper,
referenceHitMapper, entityLoader,
loadingOptions
);
}
Expand Down

0 comments on commit 69d403c

Please sign in to comment.