Class DiscriminatedEntityInitializer
- java.lang.Object
-
- org.hibernate.sql.results.graph.entity.internal.DiscriminatedEntityInitializer
-
- All Implemented Interfaces:
EntityInitializer
,FetchParentAccess
,Initializer
public class DiscriminatedEntityInitializer extends Object implements EntityInitializer
Initializer for discriminated mappings.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
DiscriminatedEntityInitializer.State
-
Field Summary
Fields Modifier and Type Field Description protected EntityPersister
concreteDescriptor
protected Object
entityIdentifier
protected Object
entityInstance
protected FetchParentAccess
parentAccess
protected boolean
parentShallowCached
protected DiscriminatedEntityInitializer.State
state
-
Constructor Summary
Constructors Constructor Description DiscriminatedEntityInitializer(FetchParentAccess parentAccess, DiscriminatedAssociationModelPart fetchedPart, NavigablePath fetchedNavigable, Fetch discriminatorFetch, Fetch keyFetch, boolean eager, boolean resultInitializer, AssemblerCreationState creationState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
endLoading(ExecutionContext executionContext)
Lifecycle method called at the very end of the result values processingvoid
finishUpRow(RowProcessingState rowProcessingState)
Lifecycle method called at the end of the current row processing.EntityPersister
getConcreteDescriptor()
EntityPersister
getEntityDescriptor()
Get the descriptor for the type of entity being initializedObject
getEntityInstance()
Get the entity instance for the currently processing "row".EntityKey
getEntityKey()
FetchParentAccess
getFetchParentAccess()
ModelPart
getInitializedPart()
NavigablePath
getNavigablePath()
@Nullable EntityMappingType
getOwnedModelPartDeclaringType()
@Nullable FetchParentAccess
getOwningParent()
Object
getParentKey()
void
initializeInstance(RowProcessingState rowProcessingState)
Step 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(org.hibernate.sql.results.jdbc.spi.RowProcessingState)
from the current row values.void
initializeInstanceFromParent(Object parentInstance, RowProcessingState rowProcessingState)
Step 3.1 - Initialize the state of the instance as extracted from the given parentInstance.boolean
isEntityInitialized()
boolean
isPartOfKey()
boolean
isResultInitializer()
void
markShallowCached()
void
registerResolutionListener(Consumer<Object> listener)
Register a listener to be notified when the parent is "resolved"void
resolveInstance(RowProcessingState rowProcessingState)
Step 2 - Using the key resolved inInitializer.resolveKey(org.hibernate.sql.results.jdbc.spi.RowProcessingState)
, resolve the instance (of the thing initialized) to use for the current row.void
resolveKey(RowProcessingState rowProcessingState)
Step 1 - Resolve the key value for this initializer for the current row.String
toString()
-
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, findFirstEntityDescriptorAccess, findFirstEntityInitializer, getInitializedInstance, isEntityInitializer
-
Methods inherited from interface org.hibernate.sql.results.graph.FetchParentAccess
shouldSkipInitializer
-
Methods inherited from interface org.hibernate.sql.results.graph.Initializer
asCollectionInitializer, asEmbeddableInitializer, isCollectionInitializer, isEmbeddableInitializer, startLoading
-
-
-
-
Field Detail
-
parentAccess
protected final FetchParentAccess parentAccess
-
parentShallowCached
protected boolean parentShallowCached
-
state
protected DiscriminatedEntityInitializer.State state
-
concreteDescriptor
protected EntityPersister concreteDescriptor
-
entityIdentifier
protected Object entityIdentifier
-
entityInstance
protected Object entityInstance
-
-
Constructor Detail
-
DiscriminatedEntityInitializer
public DiscriminatedEntityInitializer(FetchParentAccess parentAccess, DiscriminatedAssociationModelPart fetchedPart, NavigablePath fetchedNavigable, Fetch discriminatorFetch, Fetch keyFetch, boolean eager, boolean resultInitializer, AssemblerCreationState creationState)
-
-
Method Detail
-
getFetchParentAccess
public FetchParentAccess getFetchParentAccess()
- Specified by:
getFetchParentAccess
in interfaceFetchParentAccess
-
getOwningParent
public @Nullable FetchParentAccess getOwningParent()
- Specified by:
getOwningParent
in interfaceFetchParentAccess
-
getOwnedModelPartDeclaringType
public @Nullable EntityMappingType getOwnedModelPartDeclaringType()
- Specified by:
getOwnedModelPartDeclaringType
in interfaceFetchParentAccess
-
getInitializedPart
public ModelPart getInitializedPart()
- Specified by:
getInitializedPart
in interfaceInitializer
-
getNavigablePath
public NavigablePath getNavigablePath()
- Specified by:
getNavigablePath
in interfaceFetchParentAccess
- Specified by:
getNavigablePath
in interfaceInitializer
-
resolveKey
public void resolveKey(RowProcessingState rowProcessingState)
Description copied from interface:Initializer
Step 1 - Resolve the key value for this initializer for the current row. After this point, the initializer knows the entity/collection/component key for the current row- Specified by:
resolveKey
in interfaceInitializer
-
resolveInstance
public void resolveInstance(RowProcessingState rowProcessingState)
Description copied from interface:Initializer
Step 2 - Using the key resolved inInitializer.resolveKey(org.hibernate.sql.results.jdbc.spi.RowProcessingState)
, 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- Specified by:
resolveInstance
in interfaceInitializer
-
initializeInstance
public void initializeInstance(RowProcessingState rowProcessingState)
Description copied from interface:Initializer
Step 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(org.hibernate.sql.results.jdbc.spi.RowProcessingState)
from the current row values. All resolved state for the current row is injected into the resolved instance- Specified by:
initializeInstance
in interfaceInitializer
-
initializeInstanceFromParent
public void initializeInstanceFromParent(Object parentInstance, RowProcessingState rowProcessingState)
Description copied from interface:Initializer
Step 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 theJdbcValuesCacheHit
to initialize potentially lazy associations.- Specified by:
initializeInstanceFromParent
in interfaceInitializer
-
finishUpRow
public void finishUpRow(RowProcessingState rowProcessingState)
Description copied from interface:Initializer
Lifecycle method called at the end of the current row processing. Provides ability to complete processing from the current row and prepare for the next row.- Specified by:
finishUpRow
in interfaceInitializer
-
markShallowCached
public void markShallowCached()
- Specified by:
markShallowCached
in interfaceInitializer
-
endLoading
public void endLoading(ExecutionContext executionContext)
Description copied from interface:Initializer
Lifecycle method called at the very end of the result values processing- Specified by:
endLoading
in interfaceInitializer
-
getEntityDescriptor
public EntityPersister getEntityDescriptor()
Description copied from interface:EntityInitializer
Get the descriptor for the type of entity being initialized- Specified by:
getEntityDescriptor
in interfaceEntityInitializer
-
getEntityInstance
public Object getEntityInstance()
Description copied from interface:EntityInitializer
Get the entity instance for the currently processing "row".- Specified by:
getEntityInstance
in interfaceEntityInitializer
-
isEntityInitialized
public boolean isEntityInitialized()
- Specified by:
isEntityInitialized
in interfaceEntityInitializer
- Returns:
- true if the current entity associated to this EntityInitializer has been initialized
-
getConcreteDescriptor
public EntityPersister getConcreteDescriptor()
- Specified by:
getConcreteDescriptor
in interfaceEntityInitializer
-
isPartOfKey
public boolean isPartOfKey()
- Specified by:
isPartOfKey
in interfaceInitializer
-
isResultInitializer
public boolean isResultInitializer()
- Specified by:
isResultInitializer
in interfaceInitializer
-
getEntityKey
public EntityKey getEntityKey()
- Specified by:
getEntityKey
in interfaceEntityInitializer
-
getParentKey
public Object getParentKey()
- Specified by:
getParentKey
in interfaceFetchParentAccess
-
registerResolutionListener
public void registerResolutionListener(Consumer<Object> listener)
Description copied from interface:FetchParentAccess
Register a listener to be notified when the parent is "resolved"- Specified by:
registerResolutionListener
in interfaceFetchParentAccess
-
-