Class EntitySelectFetchInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
- java.lang.Object
-
- org.hibernate.sql.results.graph.internal.AbstractInitializer<Data>
-
- org.hibernate.sql.results.graph.entity.internal.EntitySelectFetchInitializer<Data>
-
- All Implemented Interfaces:
EntityInitializer<Data>,Initializer<Data>,InitializerParent<Data>
- Direct Known Subclasses:
AbstractBatchEntitySelectFetchInitializer,EntitySelectFetchByUniqueKeyInitializer
public class EntitySelectFetchInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData> extends AbstractInitializer<Data> implements EntityInitializer<Data>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classEntitySelectFetchInitializer.EntitySelectFetchInitializerData-
Nested classes/interfaces inherited from interface org.hibernate.sql.results.graph.Initializer
Initializer.State
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanaffectedByFilterprotected EntityPersisterconcreteDescriptorprotected booleanhasLazySubInitializerprotected DomainResultAssembler<?>keyAssemblerprotected booleankeyIsEagerprotected InitializerParent<?>parentprotected ToOneAttributeMappingtoOneMapping-
Fields inherited from class org.hibernate.sql.results.graph.internal.AbstractInitializer
initializerId
-
Fields inherited from interface org.hibernate.sql.results.graph.Initializer
EMPTY_ARRAY
-
-
Constructor Summary
Constructors Constructor Description EntitySelectFetchInitializer(InitializerParent<?> parent, ToOneAttributeMapping toOneMapping, NavigablePath fetchedNavigable, EntityPersister concreteDescriptor, DomainResult<?> keyResult, boolean affectedByFilter, AssemblerCreationState creationState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected InitializerDatacreateInitializerData(RowProcessingState rowProcessingState)protected voidforEachSubInitializer(BiConsumer<Initializer<?>,RowProcessingState> consumer, InitializerData data)EntityPersistergetConcreteDescriptor(Data data)EntityPersistergetEntityDescriptor()Get the descriptor for the type of entity being initialized@Nullable ObjectgetEntityIdentifier(Data data)ModelPartgetInitializedPart()DomainResultAssembler<?>getKeyAssembler()NavigablePathgetNavigablePath()@Nullable InitializerParent<?>getParent()Returns the parentInitializerornullif this is a result initializer.booleanhasLazySubInitializers()Indicates whether this initializer has sub-initializers which are lazy.protected voidinitialize(EntitySelectFetchInitializer.EntitySelectFetchInitializerData data)protected voidinitialize(EntitySelectFetchInitializer.EntitySelectFetchInitializerData data, @Nullable EntityHolder holder, SharedSessionContractImplementor session, PersistenceContext persistenceContext)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 given parentInstance.booleanisEager()Indicates whether calling resolve is needed when the object for this initializer is initialized already.booleanisPartOfKey()Indicates whether this initializer is part of a key i.e.booleanisResultInitializer()Indicates if this is a result or fetch initializer.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.voidresolveState(EntitySelectFetchInitializer.EntitySelectFetchInitializerData data)StringtoString()-
Methods inherited from class org.hibernate.sql.results.graph.internal.AbstractInitializer
finishUpRow, getData, resolveKey, startLoading
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.hibernate.sql.results.graph.entity.EntityInitializer
asEntityInitializer, getConcreteDescriptor, getEntityIdentifier, getTargetInstance, getTargetInstance, isEntityInitializer, resetResolvedEntityRegistrations, resolveEntityKeyOnly
-
Methods inherited from interface org.hibernate.sql.results.graph.Initializer
asCollectionInitializer, asEmbeddableInitializer, endLoading, endLoading, findOwningEntityInitializer, finishUpRow, finishUpRow, getData, getResolvedInstance, getResolvedInstance, initializeInstance, initializeInstanceFromParent, isCollectionInitializer, isEmbeddableInitializer, isLazyCapable, resolveFromPreviousRow, resolveInstance, resolveInstance, resolveKey, resolveKey, resolveState, startLoading
-
Methods inherited from interface org.hibernate.sql.results.graph.InitializerParent
getResolvedInstanceNoProxy
-
-
-
-
Field Detail
-
parent
protected final InitializerParent<?> parent
-
concreteDescriptor
protected final EntityPersister concreteDescriptor
-
keyAssembler
protected final DomainResultAssembler<?> keyAssembler
-
toOneMapping
protected final ToOneAttributeMapping toOneMapping
-
affectedByFilter
protected final boolean affectedByFilter
-
keyIsEager
protected final boolean keyIsEager
-
hasLazySubInitializer
protected final boolean hasLazySubInitializer
-
-
Constructor Detail
-
EntitySelectFetchInitializer
public EntitySelectFetchInitializer(InitializerParent<?> parent, ToOneAttributeMapping toOneMapping, NavigablePath fetchedNavigable, EntityPersister concreteDescriptor, DomainResult<?> keyResult, boolean affectedByFilter, AssemblerCreationState creationState)
-
-
Method Detail
-
createInitializerData
protected InitializerData createInitializerData(RowProcessingState rowProcessingState)
- Specified by:
createInitializerDatain classAbstractInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getInitializedPart
public ModelPart getInitializedPart()
- Specified by:
getInitializedPartin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getParent
public @Nullable InitializerParent<?> getParent()
Description copied from interface:InitializerReturns the parentInitializerornullif this is a result initializer.- Specified by:
getParentin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getNavigablePath
public NavigablePath getNavigablePath()
- Specified by:
getNavigablePathin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
resolveFromPreviousRow
public void resolveFromPreviousRow(Data data)
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 EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
resolveInstance
public void resolveInstance(Data data)
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 EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
resolveInstance
public void resolveInstance(Object instance, Data data)
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 EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
initializeInstance
public void initializeInstance(Data data)
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 EntitySelectFetchInitializer.EntitySelectFetchInitializerData>- Overrides:
initializeInstancein classAbstractInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
initialize
protected void initialize(EntitySelectFetchInitializer.EntitySelectFetchInitializerData data)
-
initialize
protected void initialize(EntitySelectFetchInitializer.EntitySelectFetchInitializerData data, @Nullable EntityHolder holder, SharedSessionContractImplementor session, PersistenceContext persistenceContext)
-
initializeInstanceFromParent
public void initializeInstanceFromParent(Object parentInstance, Data data)
Description copied from interface:InitializerStep 3.1 - Initialize the state of the instance as extracted from the given parentInstance. 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 theJdbcValuesCacheHitto initialize potentially lazy associations.- Specified by:
initializeInstanceFromParentin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
forEachSubInitializer
protected void forEachSubInitializer(BiConsumer<Initializer<?>,RowProcessingState> consumer, InitializerData data)
- Specified by:
forEachSubInitializerin classAbstractInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getEntityDescriptor
public EntityPersister getEntityDescriptor()
Description copied from interface:EntityInitializerGet the descriptor for the type of entity being initialized- Specified by:
getEntityDescriptorin interfaceEntityInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getConcreteDescriptor
public EntityPersister getConcreteDescriptor(Data data)
- Specified by:
getConcreteDescriptorin interfaceEntityInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getEntityIdentifier
public @Nullable Object getEntityIdentifier(Data data)
- Specified by:
getEntityIdentifierin interfaceEntityInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
isPartOfKey
public boolean isPartOfKey()
Description copied from interface:InitializerIndicates whether this initializer is part of a key i.e. entity identifier, foreign key or collection key.- Specified by:
isPartOfKeyin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
isEager
public boolean isEager()
Description copied from interface:InitializerIndicates whether calling resolve is needed when the object for this initializer is initialized already.- Specified by:
isEagerin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
resolveState
public void resolveState(EntitySelectFetchInitializer.EntitySelectFetchInitializerData data)
- Specified by:
resolveStatein interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
hasLazySubInitializers
public boolean hasLazySubInitializers()
Description copied from interface:InitializerIndicates whether this initializer has sub-initializers which are lazy.- Specified by:
hasLazySubInitializersin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
isResultInitializer
public boolean isResultInitializer()
Description copied from interface:InitializerIndicates if this is a result or fetch initializer.- Specified by:
isResultInitializerin interfaceInitializer<Data extends EntitySelectFetchInitializer.EntitySelectFetchInitializerData>
-
getKeyAssembler
public DomainResultAssembler<?> getKeyAssembler()
-
-