Skip to content

Commit 1a613f3

Browse files
committed
squash! HHH-19278 fix some logic in MultiIdEntityLoaders that just looks wrong
1 parent a6d2847 commit 1a613f3

File tree

5 files changed

+20
-120
lines changed

5 files changed

+20
-120
lines changed

hibernate-core/src/main/java/org/hibernate/engine/internal/BatchFetchQueueHelper.java

Lines changed: 0 additions & 96 deletions
This file was deleted.

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractMultiIdEntityLoader.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.LockMode;
99
import org.hibernate.LockOptions;
1010
import org.hibernate.engine.jdbc.spi.JdbcServices;
11+
import org.hibernate.engine.spi.BatchFetchQueue;
1112
import org.hibernate.engine.spi.EntityKey;
1213
import org.hibernate.engine.spi.PersistenceContext;
1314
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -25,7 +26,6 @@
2526
import java.util.ArrayList;
2627
import java.util.List;
2728

28-
import static org.hibernate.engine.internal.BatchFetchQueueHelper.removeBatchLoadableEntityKey;
2929
import static org.hibernate.event.spi.LoadEventListener.GET;
3030
import static org.hibernate.internal.util.collections.CollectionHelper.arrayList;
3131
import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty;
@@ -176,7 +176,7 @@ protected void handleResults(
176176
// the element value at this position in the results List should be
177177
// the EntityKey for that entity - reuse it
178178
final EntityKey entityKey = (EntityKey) results.get( position );
179-
removeBatchLoadableEntityKey( entityKey, session );
179+
session.getPersistenceContextInternal().getBatchFetchQueue().removeBatchLoadableEntityKey( entityKey );
180180
final Object entity = persistenceContext.getEntity( entityKey );
181181
final Object result;
182182
if ( entity == null
@@ -258,6 +258,16 @@ protected List<T> unorderedMultiLoad(
258258
(position, entityKey, resolvedRef) -> result.add( (T) resolvedRef ) );
259259
if ( !isEmpty( unresolvableIds ) ) {
260260
loadEntitiesWithUnresolvedIds( loadOptions, lockOptions, session, unresolvableIds, result );
261+
final BatchFetchQueue batchFetchQueue = session.getPersistenceContextInternal().getBatchFetchQueue();
262+
final EntityPersister persister = getLoadable().getEntityPersister();
263+
for ( Object id : unresolvableIds ) {
264+
// skip any of the null padded ids
265+
// (actually we could probably even break on the first null)
266+
if ( id != null ) {
267+
// found or not, remove the key from the batch-fetch queue
268+
batchFetchQueue.removeBatchLoadableEntityKey( session.generateEntityKey( id, persister ) );
269+
}
270+
}
261271
}
262272
return result;
263273
}

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/EntityBatchLoaderArrayParam.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.Locale;
1010

1111
import org.hibernate.LockOptions;
12+
import org.hibernate.engine.spi.BatchFetchQueue;
1213
import org.hibernate.engine.spi.LoadQueryInfluencers;
1314
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1415
import org.hibernate.internal.build.AllowReflection;
@@ -17,14 +18,14 @@
1718
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
1819
import org.hibernate.metamodel.mapping.EntityMappingType;
1920
import org.hibernate.metamodel.mapping.JdbcMapping;
21+
import org.hibernate.persister.entity.EntityPersister;
2022
import org.hibernate.query.spi.QueryOptions;
2123
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
2224
import org.hibernate.sql.ast.tree.select.SelectStatement;
2325
import org.hibernate.sql.exec.internal.JdbcParameterImpl;
2426
import org.hibernate.sql.exec.spi.JdbcOperationQuerySelect;
2527
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
2628

27-
import static org.hibernate.engine.internal.BatchFetchQueueHelper.removeBatchLoadableEntityKey;
2829
import static org.hibernate.loader.ast.internal.MultiKeyLoadHelper.trimIdBatch;
2930
import static org.hibernate.loader.ast.internal.MultiKeyLoadLogging.MULTI_KEY_LOAD_LOGGER;
3031

@@ -40,7 +41,6 @@ public class EntityBatchLoaderArrayParam<T>
4041
implements SqlArrayMultiKeyLoader {
4142
private final int domainBatchSize;
4243

43-
private final LoadQueryInfluencers loadQueryInfluencers;
4444
private final BasicEntityIdentifierMapping identifierMapping;
4545
private final JdbcMapping arrayJdbcMapping;
4646
private final JdbcParameter jdbcParameter;
@@ -64,7 +64,6 @@ public EntityBatchLoaderArrayParam(
6464
EntityMappingType entityDescriptor,
6565
LoadQueryInfluencers loadQueryInfluencers) {
6666
super( entityDescriptor, loadQueryInfluencers );
67-
this.loadQueryInfluencers = loadQueryInfluencers;
6867
this.domainBatchSize = domainBatchSize;
6968

7069
if ( MULTI_KEY_LOAD_LOGGER.isDebugEnabled() ) {
@@ -133,10 +132,12 @@ protected void initializeEntities(
133132
getLoadable().getEntityName(), id, Arrays.toString(idsToInitialize) );
134133
}
135134

135+
final BatchFetchQueue batchFetchQueue = session.getPersistenceContextInternal().getBatchFetchQueue();
136+
final EntityPersister persister = getLoadable().getEntityPersister();
136137
for ( Object initializedId : idsToInitialize ) {
137138
if ( initializedId != null ) {
138139
// found or not, remove the key from the batch-fetch queue
139-
removeBatchLoadableEntityKey( initializedId, getLoadable(), session );
140+
batchFetchQueue.removeBatchLoadableEntityKey( session.generateEntityKey( initializedId, persister ) );
140141
}
141142
}
142143

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/EntityBatchLoaderInPredicate.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99

1010
import org.hibernate.LockOptions;
1111
import org.hibernate.engine.spi.BatchFetchQueue;
12-
import org.hibernate.engine.spi.EntityKey;
1312
import org.hibernate.engine.spi.LoadQueryInfluencers;
1413
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1514
import org.hibernate.engine.spi.SubselectFetch;
1615
import org.hibernate.loader.ast.spi.EntityBatchLoader;
1716
import org.hibernate.loader.ast.spi.SqlInPredicateMultiKeyLoader;
1817
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
1918
import org.hibernate.metamodel.mapping.EntityMappingType;
19+
import org.hibernate.persister.entity.EntityPersister;
2020
import org.hibernate.query.spi.QueryOptions;
2121
import org.hibernate.sql.ast.tree.select.SelectStatement;
2222
import org.hibernate.sql.exec.spi.JdbcOperationQuerySelect;
@@ -41,7 +41,6 @@ public class EntityBatchLoaderInPredicate<T>
4141
private final int domainBatchSize;
4242
private final int sqlBatchSize;
4343

44-
private final LoadQueryInfluencers loadQueryInfluencers;
4544
private final JdbcParametersList jdbcParameters;
4645
private final SelectStatement sqlAst;
4746
private final JdbcOperationQuerySelect jdbcSelectOperation;
@@ -54,7 +53,6 @@ public EntityBatchLoaderInPredicate(
5453
EntityMappingType entityDescriptor,
5554
LoadQueryInfluencers loadQueryInfluencers) {
5655
super( entityDescriptor, loadQueryInfluencers );
57-
this.loadQueryInfluencers = loadQueryInfluencers;
5856
this.domainBatchSize = domainBatchSize;
5957
int idColumnCount =
6058
entityDescriptor.getEntityPersister().getIdentifierType()
@@ -140,6 +138,7 @@ protected void initializeEntities(
140138
);
141139

142140
final BatchFetchQueue batchFetchQueue = session.getPersistenceContextInternal().getBatchFetchQueue();
141+
final EntityPersister persister = getLoadable().getEntityPersister();
143142

144143
chunker.processChunks(
145144
idsToInitialize,
@@ -164,11 +163,7 @@ protected void initializeEntities(
164163
},
165164
(key, relativePosition, absolutePosition) -> {
166165
if ( key != null ) {
167-
final EntityKey entityKey = session.generateEntityKey(
168-
key,
169-
getLoadable().getEntityPersister()
170-
);
171-
batchFetchQueue.removeBatchLoadableEntityKey( entityKey );
166+
batchFetchQueue.removeBatchLoadableEntityKey( session.generateEntityKey( key, persister ) );
172167
}
173168
},
174169
(startIndex) -> {

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderArrayParam.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.hibernate.sql.results.spi.ManagedResultConsumer;
3232

3333
import static java.lang.Boolean.TRUE;
34-
import static org.hibernate.engine.internal.BatchFetchQueueHelper.removeBatchLoadableEntityKey;
3534
import static org.hibernate.engine.spi.SubselectFetch.createRegistrationHandler;
3635
import static org.hibernate.loader.ast.internal.LoaderHelper.loadByArrayParameter;
3736
import static org.hibernate.loader.ast.internal.LoaderSelectBuilder.createSelectBySingleArrayParameter;
@@ -156,15 +155,6 @@ protected void loadEntitiesWithUnresolvedIds(
156155
session
157156
);
158157
result.addAll( databaseResults );
159-
160-
for ( Object id : unresolvableIds ) {
161-
// skip any of the null padded ids
162-
// (actually we could probably even break on the first null)
163-
if ( id != null ) {
164-
// found or not, remove the key from the batch-fetch queue
165-
removeBatchLoadableEntityKey( id, getLoadable(), session );
166-
}
167-
}
168158
}
169159

170160
@Override

0 commit comments

Comments
 (0)