From 8aa74d57fffdcb69ddc07745470ca137f9167e54 Mon Sep 17 00:00:00 2001 From: Fabio Massimo Ercoli Date: Tue, 4 Aug 2020 20:00:13 +0200 Subject: [PATCH] HSEARCH-3787 Pass timeout as hint query parameter --- .../loading/impl/HibernateOrmComposableEntityLoader.java | 6 ------ .../loading/impl/HibernateOrmEntityIdEntityLoader.java | 3 ++- .../impl/HibernateOrmNonEntityIdPropertyEntityLoader.java | 3 ++- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmComposableEntityLoader.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmComposableEntityLoader.java index 026af720613..91fbe72ab27 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmComposableEntityLoader.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmComposableEntityLoader.java @@ -53,10 +53,4 @@ default List loadBlocking(List references, Long timeout) { void loadBlocking(List references, Map entitiesByReference, Long timeout); - static Integer getTimeoutInSeconds(Long timeout) { - long result = ( timeout / 1000 ); - long longResult = ( timeout % 1000 == 0 ) ? result : result + 1; - return Math.toIntExact( longResult ); - } - } diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmEntityIdEntityLoader.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmEntityIdEntityLoader.java index 95cd8e95544..d34c3333f6d 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmEntityIdEntityLoader.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmEntityIdEntityLoader.java @@ -16,6 +16,7 @@ import org.hibernate.engine.spi.EntityKey; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SessionImplementor; +import org.hibernate.jpa.QueryHints; import org.hibernate.metamodel.spi.MetamodelImplementor; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.query.Query; @@ -150,7 +151,7 @@ private Query createQuery(int fetchSize, Long timeout) { query.setFetchSize( fetchSize ); if ( timeout != null ) { - query.setTimeout( HibernateOrmComposableEntityLoader.getTimeoutInSeconds( timeout ) ); + query.setHint( QueryHints.SPEC_HINT_TIMEOUT, Math.toIntExact( timeout ) ); } EntityGraphHint entityGraphHint = loadingOptions.entityGraphHintOrNullForType( entityPersister ); diff --git a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmNonEntityIdPropertyEntityLoader.java b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmNonEntityIdPropertyEntityLoader.java index fe5496e116a..39545da5570 100644 --- a/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmNonEntityIdPropertyEntityLoader.java +++ b/mapper/orm/src/main/java/org/hibernate/search/mapper/orm/search/loading/impl/HibernateOrmNonEntityIdPropertyEntityLoader.java @@ -18,6 +18,7 @@ import org.hibernate.AssertionFailure; import org.hibernate.Hibernate; import org.hibernate.engine.spi.SessionImplementor; +import org.hibernate.jpa.QueryHints; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.query.Query; import org.hibernate.search.mapper.orm.common.EntityReference; @@ -122,7 +123,7 @@ private Query createQuery(int fetchSize, Long timeout) { query.setFetchSize( fetchSize ); if ( timeout != null ) { - query.setTimeout( HibernateOrmComposableEntityLoader.getTimeoutInSeconds( timeout ) ); + query.setHint( QueryHints.SPEC_HINT_TIMEOUT, Math.toIntExact( timeout ) ); } EntityGraphHint entityGraphHint = loadingOptions.entityGraphHintOrNullForType( entityPersister );