Class EntityInitializerImpl
- All Implemented Interfaces:
EntityInitializer<EntityInitializerImpl.EntityInitializerData>,Initializer<EntityInitializerImpl.EntityInitializerData>,InitializerParent<EntityInitializerImpl.EntityInitializerData>
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.hibernate.sql.results.graph.Initializer
Initializer.State -
Field Summary
Fields inherited from class org.hibernate.sql.results.graph.internal.AbstractInitializer
initializerIdFields inherited from interface org.hibernate.sql.results.graph.Initializer
EMPTY_ARRAY -
Constructor Summary
ConstructorsConstructorDescriptionEntityInitializerImpl(EntityResultGraphNode resultDescriptor, String sourceAlias, @Nullable Fetch identifierFetch, @Nullable Fetch discriminatorFetch, @Nullable DomainResult<?> keyResult, @Nullable DomainResult<Object> rowIdResult, NotFoundAction notFoundAction, boolean affectedByFilter, @Nullable InitializerParent<?> parent, boolean isResultInitializer, AssemblerCreationState creationState) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleancreateInitializerData(RowProcessingState rowProcessingState) static @Nullable EntityPersisterdetermineConcreteEntityDescriptor(RowProcessingState rowProcessingState, @Nullable BasicResultAssembler<?> discriminatorAssembler, EntityPersister entityDescriptor) protected Object[]protected voidforEachSubInitializer(BiConsumer<Initializer<?>, RowProcessingState> consumer, InitializerData data) protected @Nullable DomainResultAssembler<?>[][]getAttributeInterceptor(Object entity) protected @Nullable BasicResultAssembler<?>Get the descriptor for the type of entity being initializedprotected Object@Nullable Objectprotected DomainResultAssembler<?>@Nullable DomainResultAssembler<?>@Nullable InitializerParent<?>Returns the parentInitializerornullif this is a result initializer.protected Type[]getParentEntityAttributeTypes(String attributeName) protected @Nullable DomainResultAssembler<Object>protected Initializer<?>[][]Get the target entity instance for the currently processing "row".protected @Nullable DomainResultAssembler<?>booleanIndicates whether this initializer has sub-initializers which are lazy.protected voidinitializeAttributeType(Type[] attributeTypes, EntityPersister entityDescriptor, String attributeName) protected voidvoidStep 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(Data)from the current row values.voidinitializeInstanceFromParent(Object parentInstance, EntityInitializerImpl.EntityInitializerData data) Step 3.1 - Initialize the state of the instance as extracted from the givenparentInstance.protected voidprotected ObjectbooleanisEager()Indicates whether calling resolve is needed when the object for this initializer is initialized already.protected booleanbooleanIndicates whether this initializer is part of a key i.e.booleanbooleanIndicates if this is a result or fetch initializer.protected voidpreLoad(EntityInitializerImpl.EntityInitializerData data, Object[] resolvedEntityState) protected voidregisterLoadingEntity(EntityInitializerImpl.EntityInitializerData data, Object instance) protected voidregisterNaturalIdResolution(EntityInitializerImpl.EntityInitializerData data, PersistenceContext persistenceContext, Object[] resolvedEntityState) protected voidregisterPossibleUniqueKeyEntries(EntityInitializerImpl.EntityInitializerData data, Object[] resolvedEntityState, SharedSessionContractImplementor session) protected voidvoidresetResolvedEntityRegistrations(RowProcessingState rowProcessingState) Resets the resolved entity registrations by i.e.protected Objectprotected voidprotected ObjectUsed by Hibernate Reactiveprotected void@Nullable EntityKeyresolveEntityKeyOnly(RowProcessingState rowProcessingState) protected voidvoidStep 1.2 - Special variant ofInitializer.resolveKey(InitializerData)that allows the reuse of key value and instance value from the previous row.voidresolveInstance(Object instance, EntityInitializerImpl.EntityInitializerData data) Step 2.2 - Use the given instance as resolved instance for this initializer.voidStep 2.1 - Using the key resolved inInitializer.resolveKey(Data), resolve the instance (of the thing initialized) to use for the current row.protected voidvoidStep 1.1 - Resolve the key value for this initializer for the current row and then recurse to the sub-initializers.protected voidresolveKey(EntityInitializerImpl.EntityInitializerData data, boolean entityKeyOnly) protected voidvoidprotected voidprotected booleanprotected voidtakeSnapshot(EntityInitializerImpl.EntityInitializerData data, SharedSessionContractImplementor session, PersistenceContext persistenceContext, EntityEntry entityEntry, Object[] resolvedEntityState) toString()protected voidupdateCaches(EntityInitializerImpl.EntityInitializerData data, SharedSessionContractImplementor session, PersistenceContext persistenceContext, Object[] resolvedEntityState, Object version) protected voidprotected booleanMethods 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, wait, wait, waitMethods inherited from interface org.hibernate.sql.results.graph.entity.EntityInitializer
asEntityInitializer, getConcreteDescriptor, getEntityIdentifier, getTargetInstance, isEntityInitializerMethods inherited from interface org.hibernate.sql.results.graph.Initializer
asCollectionInitializer, asEmbeddableInitializer, endLoading, findOwningEntityInitializer, finishUpRow, getData, getResolvedInstance, getResolvedInstance, initializeInstance, initializeInstanceFromParent, isCollectionInitializer, isEmbeddableInitializer, isLazyCapable, resolveFromPreviousRow, resolveInstance, resolveInstance, resolveKey, resolveState, startLoading
-
Constructor Details
-
EntityInitializerImpl
public EntityInitializerImpl(EntityResultGraphNode resultDescriptor, String sourceAlias, @Nullable Fetch identifierFetch, @Nullable Fetch discriminatorFetch, @Nullable DomainResult<?> keyResult, @Nullable DomainResult<Object> rowIdResult, NotFoundAction notFoundAction, boolean affectedByFilter, @Nullable InitializerParent<?> parent, boolean isResultInitializer, AssemblerCreationState creationState)
-
-
Method Details
-
createInitializerData
protected EntityInitializerImpl.EntityInitializerData createInitializerData(RowProcessingState rowProcessingState) - Specified by:
createInitializerDatain classAbstractInitializer<EntityInitializerImpl.EntityInitializerData>
-
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<EntityInitializerImpl.EntityInitializerData>- Overrides:
resolveKeyin classAbstractInitializer<EntityInitializerImpl.EntityInitializerData>
-
getEntityIdentifier
- Specified by:
getEntityIdentifierin interfaceEntityInitializer<EntityInitializerImpl.EntityInitializerData>
-
resolveEntityKeyOnly
- Specified by:
resolveEntityKeyOnlyin interfaceEntityInitializer<EntityInitializerImpl.EntityInitializerData>
-
resetResolvedEntityRegistrations
Description copied from interface:EntityInitializerResets the resolved entity registrations by i.e. removingEntityHolder. -
resolveKey
-
resolveInstanceSubInitializers
-
resolveKeySubInitializers
-
resolveEntityKey
@EnsuresNonNull("data.entityKey") protected void resolveEntityKey(EntityInitializerImpl.EntityInitializerData data, Object id) -
setMissing
-
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<EntityInitializerImpl.EntityInitializerData>
-
initializeInstanceFromParent
public void initializeInstanceFromParent(Object parentInstance, EntityInitializerImpl.EntityInitializerData data) 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<EntityInitializerImpl.EntityInitializerData>
-
isResultInitializer
public boolean isResultInitializer()Description copied from interface:InitializerIndicates if this is a result or fetch initializer.- Specified by:
isResultInitializerin interfaceInitializer<EntityInitializerImpl.EntityInitializerData>
-
getInitializedPart
- Specified by:
getInitializedPartin interfaceInitializer<EntityInitializerImpl.EntityInitializerData>
-
getIdentifierAssembler
-
getEntityDescriptor
Description copied from interface:EntityInitializerGet the descriptor for the type of entity being initialized- Specified by:
getEntityDescriptorin interfaceEntityInitializer<EntityInitializerImpl.EntityInitializerData>
-
getTargetInstance
Description copied from interface:EntityInitializerGet the target entity instance for the currently processing "row".- Specified by:
getTargetInstancein interfaceEntityInitializer<EntityInitializerImpl.EntityInitializerData>
-
getParent
Description copied from interface:InitializerReturns the parentInitializerornullif this is a result initializer.- Specified by:
getParentin interfaceInitializer<EntityInitializerImpl.EntityInitializerData>
-
getParentEntityAttributeTypes
-
initializeAttributeType
protected void initializeAttributeType(Type[] attributeTypes, EntityPersister entityDescriptor, String attributeName) -
determineConcreteEntityDescriptor
public static @Nullable EntityPersister determineConcreteEntityDescriptor(RowProcessingState rowProcessingState, @Nullable BasicResultAssembler<?> discriminatorAssembler, EntityPersister entityDescriptor) throws WrongClassException - Throws:
WrongClassException
-
useEmbeddedIdentifierInstanceAsEntity
protected boolean useEmbeddedIdentifierInstanceAsEntity(EntityInitializerImpl.EntityInitializerData data) -
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<EntityInitializerImpl.EntityInitializerData>
-
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<EntityInitializerImpl.EntityInitializerData>
-
resolveEntityInstance1
-
getEntityFromExecutionContext
-
upgradeLockMode
-
resolveEntityInstance2
Used by Hibernate Reactive -
resolveEntityInstance
-
instantiateEntity
-
registerLoadingEntity
protected void registerLoadingEntity(EntityInitializerImpl.EntityInitializerData data, Object instance) -
registerReloadedEntity
-
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<EntityInitializerImpl.EntityInitializerData>- Overrides:
initializeInstancein classAbstractInitializer<EntityInitializerImpl.EntityInitializerData>
-
consistentInstance
-
initializeEntityInstance
-
registerNaturalIdResolution
protected void registerNaturalIdResolution(EntityInitializerImpl.EntityInitializerData data, PersistenceContext persistenceContext, Object[] resolvedEntityState) -
extractConcreteTypeStateValues
-
resolveState
- Specified by:
resolveStatein interfaceInitializer<EntityInitializerImpl.EntityInitializerData>
-
resolveEntityState
-
skipInitialization
-
preLoad
protected void preLoad(EntityInitializerImpl.EntityInitializerData data, Object[] resolvedEntityState) -
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<EntityInitializerImpl.EntityInitializerData>
-
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<EntityInitializerImpl.EntityInitializerData>
-
hasLazySubInitializers
public boolean hasLazySubInitializers()Description copied from interface:InitializerIndicates whether this initializer has sub-initializers which are lazy.- Specified by:
hasLazySubInitializersin interfaceInitializer<EntityInitializerImpl.EntityInitializerData>
-
isPreviousRowReuse
public boolean isPreviousRowReuse() -
getConcreteDescriptor
- Specified by:
getConcreteDescriptorin interfaceEntityInitializer<EntityInitializerImpl.EntityInitializerData>
-
initializeSubInstancesFromParent
-
forEachSubInitializer
protected void forEachSubInitializer(BiConsumer<Initializer<?>, RowProcessingState> consumer, InitializerData data) - Specified by:
forEachSubInitializerin classAbstractInitializer<EntityInitializerImpl.EntityInitializerData>
-
getAttributeInterceptor
-
toString
-
getVersionAssembler
-
getRowIdAssembler
-
getAssemblers
-
getDiscriminatorAssembler
-
isKeyManyToOne
protected boolean isKeyManyToOne() -
getSubInitializers
-
getKeyAssembler
-