Skip to content

Commit

Permalink
HSEARCH-3074 Convert Criteria into jpa CriteriaQuery to load entities…
Browse files Browse the repository at this point in the history
… from ids
  • Loading branch information
fax4ever committed Jun 20, 2019
1 parent 0e113f2 commit 6e6974d
Showing 1 changed file with 15 additions and 11 deletions.
Expand Up @@ -11,20 +11,21 @@
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import javax.persistence.LockModeType;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import javax.transaction.TransactionManager;

import org.hibernate.CacheMode;
import org.hibernate.Criteria;
import org.hibernate.FlushMode;
import org.hibernate.LockMode;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Restrictions;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform;
import org.hibernate.internal.CriteriaImpl;
import org.hibernate.query.Query;
import org.hibernate.search.engine.backend.work.execution.DocumentCommitStrategy;
import org.hibernate.search.mapper.orm.logging.impl.Log;
import org.hibernate.search.mapper.orm.massindexing.monitor.MassIndexingMonitor;
Expand Down Expand Up @@ -148,17 +149,20 @@ private void loadList(List<Serializable> listIds, SessionImplementor session, Po
try {
beginTransaction( session );

Criteria criteria = new CriteriaImpl( type.getName(), session )
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<?> criteria = builder.createQuery( type );
Root<?> root = criteria.from( type );
criteria.where( root.get( idName ).in( listIds ) );

Query<?> query = session.createQuery( criteria )
.setCacheMode( cacheMode )
.setLockMode( LockMode.NONE )
.setLockMode( LockModeType.NONE )
.setCacheable( false )
.setFlushMode( FlushMode.MANUAL )
.setHibernateFlushMode( FlushMode.MANUAL )
.setFetchSize( listIds.size() )
.setResultTransformer( CriteriaSpecification.DISTINCT_ROOT_ENTITY )
.add( Restrictions.in( idName, listIds ) );
List<?> list = criteria.list();
.setResultTransformer( CriteriaSpecification.DISTINCT_ROOT_ENTITY );

indexAllQueue( workExecutor, list );
indexAllQueue( workExecutor, query.getResultList() );
session.clear();
}
finally {
Expand Down

0 comments on commit 6e6974d

Please sign in to comment.