Class AbstractImmediateCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
- All Implemented Interfaces:
BiConsumer<Data,,List<Object>> CollectionInitializer<Data>,Initializer<Data>,InitializerParent<Data>
- Direct Known Subclasses:
ArrayInitializer,BagInitializer,ListInitializer,MapInitializer,SetInitializer
- Implementation Note:
- Mainly an intention contract wrt the immediacy of the fetch.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classNested classes/interfaces inherited from class org.hibernate.sql.results.graph.collection.internal.AbstractCollectionInitializer
AbstractCollectionInitializer.CollectionInitializerDataNested classes/interfaces inherited from interface org.hibernate.sql.results.graph.Initializer
Initializer.State -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final @Nullable DomainResultAssembler<?>refers to the rows entry in the collection.Fields inherited from class org.hibernate.sql.results.graph.collection.internal.AbstractCollectionInitializer
collectionAttributeMapping, collectionKeyResultAssembler, collectionPath, isResultInitializer, keyTypeForEqualsHashCode, owningEntityInitializer, parentFields inherited from class org.hibernate.sql.results.graph.internal.AbstractInitializer
initializerIdFields inherited from interface org.hibernate.sql.results.graph.Initializer
EMPTY_ARRAY -
Constructor Summary
ConstructorsConstructorDescriptionAbstractImmediateCollectionInitializer(NavigablePath collectionPath, PluralAttributeMapping collectionAttributeMapping, InitializerParent<?> parent, LockMode lockMode, DomainResult<?> collectionKeyResult, DomainResult<?> collectionValueKeyResult, boolean isResultInitializer, AssemblerCreationState creationState) -
Method Summary
Modifier and TypeMethodDescriptionvoidcreateInitializerData(RowProcessingState rowProcessingState) protected voidforEachSubInitializer(BiConsumer<Initializer<?>, RowProcessingState> consumer, InitializerData data) abstract DomainResultAssembler<?>abstract @Nullable DomainResultAssembler<?>booleanIndicates whether this initializer has sub-initializers which are lazy.voidinitializeInstance(Data data) Step 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(Data)from the current row values.voidinitializeInstanceFromParent(Object parentInstance, Data data) Step 3.1 - Initialize the state of the instance as extracted from the givenparentInstance.protected voidinitializeShallowCached(Data data) protected abstract voidprotected abstract voidreadCollectionRow(Data data, List<Object> loadingState) voidresolveFromPreviousRow(Data data) Step 1.2 - Special variant ofInitializer.resolveKey(InitializerData)that allows the reuse of key value and instance value from the previous row.voidresolveInstance(Data data) Step 2.1 - Using the key resolved inInitializer.resolveKey(Data), resolve the instance (of the thing initialized) to use for the current row.voidresolveInstance(Object instance, Data data) Step 2.2 - Use the given instance as resolved instance for this initializer.protected abstract voidvoidresolveKey(Data data) Step 1.1 - Resolve the key value for this initializer for the current row and then recurse to the sub-initializers.voidresolveState(Data data) protected voidsetMissing(Data data) protected voidtakeResponsibility(Data data) Methods inherited from class org.hibernate.sql.results.graph.collection.internal.AbstractCollectionInitializer
getCollectionAttributeMapping, getCollectionInstance, getInitializedPart, getNavigablePath, getParent, isEager, isPartOfKey, isResultInitializer, resolveCollectionKeyMethods inherited from class org.hibernate.sql.results.graph.internal.AbstractInitializer
finishUpRow, getData, startLoadingMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.function.BiConsumer
andThenMethods inherited from interface org.hibernate.sql.results.graph.collection.CollectionInitializer
asCollectionInitializer, getCollectionInstance, getInitializingCollectionDescriptor, isCollectionInitializerMethods inherited from interface org.hibernate.sql.results.graph.Initializer
asEmbeddableInitializer, asEntityInitializer, endLoading, findOwningEntityInitializer, finishUpRow, getData, getResolvedInstance, getResolvedInstance, initializeInstance, initializeInstanceFromParent, isEmbeddableInitializer, isEntityInitializer, isLazyCapable, resolveFromPreviousRow, resolveInstance, resolveInstance, resolveKey, resolveState, startLoading
-
Field Details
-
collectionValueKeyResultAssembler
refers to the rows entry in the collection. null indicates that the collection is empty
-
-
Constructor Details
-
Method Details
-
createInitializerData
protected AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData createInitializerData(RowProcessingState rowProcessingState) - Overrides:
createInitializerDatain classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
forEachSubInitializer
protected void forEachSubInitializer(BiConsumer<Initializer<?>, RowProcessingState> consumer, InitializerData data) - Overrides:
forEachSubInitializerin classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
resolveKey
Description copied from interface:InitializerStep 1.1 - Resolve the key value for this initializer for the current row and then recurse to the sub-initializers.After this point, the initializer knows whether further processing is necessary for the current row i.e. if the object is missing.
- Specified by:
resolveKeyin interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>- Overrides:
resolveKeyin classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
resolveState
- Specified by:
resolveStatein interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>- Overrides:
resolveStatein classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
resolveFromPreviousRow
Description copied from interface:InitializerStep 1.2 - Special variant ofInitializer.resolveKey(InitializerData)that allows the reuse of key value and instance value from the previous row.- Specified by:
resolveFromPreviousRowin interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>- Overrides:
resolveFromPreviousRowin classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
resolveInstance
Description copied from interface:InitializerStep 2.1 - Using the key resolved inInitializer.resolveKey(Data), resolve the instance (of the thing initialized) to use for the current row.After this point, the initializer knows the entity/collection/component instance for the current row based on the resolved key. If the resolving was successful,
Initializer.getResolvedInstance(RowProcessingState)will return that instance.- Specified by:
resolveInstancein interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
initializeShallowCached
-
setMissing
- Overrides:
setMissingin classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
resolveInstance
Description copied from interface:InitializerStep 2.2 - Use the given instance as resolved instance for this initializer. Initializers are supposed to recursively call this method for sub-initializers.This alternative initialization protocol is used when a parent instance was already part of the persistence context.
- Specified by:
resolveInstancein interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
resolveInstanceSubInitializers
-
takeResponsibility
-
initializeInstance
Description copied from interface:InitializerStep 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(Data)from the current row values.All resolved state for the current row is injected into the resolved instance
- Specified by:
initializeInstancein interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>- Overrides:
initializeInstancein classAbstractInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
initializeInstanceFromParent
Description copied from interface:InitializerStep 3.1 - Initialize the state of the instance as extracted from the givenparentInstance. Extraction can be done with theInitializer.getInitializedPart(). Initializers are supposed to recursively call this method for sub-initializers.This alternative initialization protocol is used for shallow query cache hits, in which case there is no data available in the
JdbcValuesCacheHitto initialize potentially lazy associations.- Specified by:
initializeInstanceFromParentin interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
hasLazySubInitializers
public boolean hasLazySubInitializers()Description copied from interface:InitializerIndicates whether this initializer has sub-initializers which are lazy.- Specified by:
hasLazySubInitializersin interfaceInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>- Overrides:
hasLazySubInitializersin classAbstractCollectionInitializer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData>
-
accept
- Specified by:
acceptin interfaceBiConsumer<Data extends AbstractImmediateCollectionInitializer.ImmediateCollectionInitializerData,List<Object>>
-
readCollectionRow
-
initializeSubInstancesFromParent
-
getIndexAssembler
-
getElementAssembler
-