Class CircularBiDirectionalFetchImpl
- java.lang.Object
-
- org.hibernate.sql.results.internal.domain.CircularBiDirectionalFetchImpl
-
- All Implemented Interfaces:
Association,Bindable,JdbcMappingContainer,MappingModelExpressible,ModelPart,BiDirectionalFetch,DomainResultGraphNode,Fetch,Fetchable
public class CircularBiDirectionalFetchImpl extends Object implements BiDirectionalFetch, Association
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.Bindable
Bindable.JdbcValuesConsumer
-
Nested classes/interfaces inherited from interface org.hibernate.metamodel.mapping.ModelPart
ModelPart.JdbcValueConsumer
-
-
Constructor Summary
Constructors Constructor Description CircularBiDirectionalFetchImpl(FetchTiming timing, NavigablePath navigablePath, FetchParent fetchParent, ToOneAttributeMapping fetchable, LockMode lockMode, NavigablePath referencedNavigablePath, DomainResult<?> keyDomainResult)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidapplySqlSelections(NavigablePath navigablePath, TableGroup tableGroup, DomainResultCreationState creationState)Apply SQL selections for a specific reference to this ModelPart outside the domain query's root select clause.voidapplySqlSelections(NavigablePath navigablePath, TableGroup tableGroup, DomainResultCreationState creationState, BiConsumer<SqlSelection,JdbcMapping> selectionConsumer)Apply SQL selections for a specific reference to this ModelPart outside the domain query's root select clause.voidbreakDownJdbcValues(Object domainValue, ModelPart.JdbcValueConsumer valueConsumer, SharedSessionContractImplementor session)DomainResultAssemblercreateAssembler(FetchParentAccess parentAccess, AssemblerCreationState creationState)Create the assembler for this fetch<T> DomainResult<T>createDomainResult(NavigablePath navigablePath, TableGroup tableGroup, String resultVariable, DomainResultCreationState creationState)Create a DomainResult for a specific reference to this ModelPart.Objectdisassemble(Object value, SharedSessionContractImplementor session)EntityMappingTypefindContainingEntityMapping()intforEachDisassembledJdbcValue(Object value, Clause clause, int offset, Bindable.JdbcValuesConsumer valuesConsumer, SharedSessionContractImplementor session)intforEachJdbcType(int offset, IndexedConsumer<JdbcMapping> action)Visit each JdbcMapping starting from the given offsetFetchgenerateFetch(FetchParent fetchParent, NavigablePath fetchablePath, FetchTiming fetchTiming, boolean selected, String resultVariable, DomainResultCreationState creationState)Generates a Fetch of this fetchableStringgetFetchableName()The name of the fetchableFetchablegetFetchedMapping()The value mapping being fetchedFetchParentgetFetchParent()Obtain the owner of this fetch.ForeignKeyDescriptorgetForeignKeyDescriptor()The descriptor, allowing access to column(s), etcJavaType<?>getJavaType()FetchOptionsgetMappedFetchOptions()The configured fetch timing and styleNavigablePathgetNavigablePath()Get the property path to this fetchNavigableRolegetNavigableRole()MappingTypegetPartMappingType()StringgetPartName()NavigablePathgetReferencedPath()The NavigablePath for the DomainResult or Fetch that this Fetch refers to.JavaType<?>getResultJavaType()ForeignKeyDescriptor.NaturegetSideNature()Indicates which "side" of the foreign-key this association describesFetchTiminggetTiming()immediate or delayed? todo (6.0) : should we also expose the fetch-style? Perhaps the fetch-options?booleanhasTableGroup()Is the TableGroup associated with this Fetch defined?-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.metamodel.mapping.Bindable
forEachDisassembledJdbcValue, forEachJdbcType, forEachJdbcValue, forEachJdbcValue, getJdbcMappings, getJdbcTypeCount
-
Methods inherited from interface org.hibernate.sql.results.graph.DomainResultGraphNode
appliesTo
-
Methods inherited from interface org.hibernate.sql.results.graph.Fetch
containsAnyNonScalarResults
-
Methods inherited from interface org.hibernate.sql.results.graph.Fetchable
asAttributeMapping, incrementFetchDepth, resolveCircularFetch
-
Methods inherited from interface org.hibernate.metamodel.mapping.ModelPart
areEqual, forEachSelectable, forEachSelectable
-
-
-
-
Constructor Detail
-
CircularBiDirectionalFetchImpl
public CircularBiDirectionalFetchImpl(FetchTiming timing, NavigablePath navigablePath, FetchParent fetchParent, ToOneAttributeMapping fetchable, LockMode lockMode, NavigablePath referencedNavigablePath, DomainResult<?> keyDomainResult)
-
-
Method Detail
-
getNavigablePath
public NavigablePath getNavigablePath()
Description copied from interface:FetchGet the property path to this fetch- Specified by:
getNavigablePathin interfaceDomainResultGraphNode- Specified by:
getNavigablePathin interfaceFetch- Returns:
- The property path
-
getReferencedPath
public NavigablePath getReferencedPath()
Description copied from interface:BiDirectionalFetchThe NavigablePath for the DomainResult or Fetch that this Fetch refers to. For `o`, the referenced path is `p`. For `oa`, it's `p.address` Different fromFetch.getNavigablePath()which returns this fetch's path, i.e. `p.address.owner` and `p.address.owner.address` respectively- Specified by:
getReferencedPathin interfaceBiDirectionalFetch
-
getFetchParent
public FetchParent getFetchParent()
Description copied from interface:FetchObtain the owner of this fetch. Ultimately used to identify the thing that "owns" this fetched navigable for the purpose of:* identifying the associated owner reference as we process the fetch * inject the fetched instance into the parent and potentially inject the parent reference into the fetched instance if it defines such injection (e.g.
Parent)- Specified by:
getFetchParentin interfaceFetch
-
getFetchedMapping
public Fetchable getFetchedMapping()
Description copied from interface:FetchThe value mapping being fetched- Specified by:
getFetchedMappingin interfaceFetch
-
getResultJavaType
public JavaType<?> getResultJavaType()
- Specified by:
getResultJavaTypein interfaceDomainResultGraphNode
-
createAssembler
public DomainResultAssembler createAssembler(FetchParentAccess parentAccess, AssemblerCreationState creationState)
Description copied from interface:FetchCreate the assembler for this fetch- Specified by:
createAssemblerin interfaceFetch
-
getTiming
public FetchTiming getTiming()
Description copied from interface:Fetchimmediate or delayed? todo (6.0) : should we also expose the fetch-style? Perhaps the fetch-options?
-
hasTableGroup
public boolean hasTableGroup()
Description copied from interface:FetchIs the TableGroup associated with this Fetch defined?- Specified by:
hasTableGroupin interfaceFetch
-
getFetchableName
public String getFetchableName()
Description copied from interface:FetchableThe name of the fetchable- Specified by:
getFetchableNamein interfaceFetchable
-
getPartName
public String getPartName()
- Specified by:
getPartNamein interfaceModelPart
-
getNavigableRole
public NavigableRole getNavigableRole()
- Specified by:
getNavigableRolein interfaceModelPart- See Also:
ModelPart.getPartName()
-
findContainingEntityMapping
public EntityMappingType findContainingEntityMapping()
- Specified by:
findContainingEntityMappingin interfaceModelPart
-
getPartMappingType
public MappingType getPartMappingType()
- Specified by:
getPartMappingTypein interfaceModelPart
-
getJavaType
public JavaType<?> getJavaType()
- Specified by:
getJavaTypein interfaceModelPart
-
getMappedFetchOptions
public FetchOptions getMappedFetchOptions()
Description copied from interface:FetchableThe configured fetch timing and style- Specified by:
getMappedFetchOptionsin interfaceFetchable
-
getForeignKeyDescriptor
public ForeignKeyDescriptor getForeignKeyDescriptor()
Description copied from interface:AssociationThe descriptor, allowing access to column(s), etc- Specified by:
getForeignKeyDescriptorin interfaceAssociation
-
getSideNature
public ForeignKeyDescriptor.Nature getSideNature()
Description copied from interface:AssociationIndicates which "side" of the foreign-key this association describes- Specified by:
getSideNaturein interfaceAssociation
-
breakDownJdbcValues
public void breakDownJdbcValues(Object domainValue, ModelPart.JdbcValueConsumer valueConsumer, SharedSessionContractImplementor session)
- Specified by:
breakDownJdbcValuesin interfaceModelPart
-
generateFetch
public Fetch generateFetch(FetchParent fetchParent, NavigablePath fetchablePath, FetchTiming fetchTiming, boolean selected, String resultVariable, DomainResultCreationState creationState)
Description copied from interface:FetchableGenerates a Fetch of this fetchable- Specified by:
generateFetchin interfaceFetchable- Parameters:
fetchParent- The parent of the Fetch we are generatingfetchablePath- The overall path within the graphfetchTiming- The requested fetch timing
-
disassemble
public Object disassemble(Object value, SharedSessionContractImplementor session)
- Specified by:
disassemblein interfaceBindable- See Also:
As an example, consider the following domain model: ````
-
forEachDisassembledJdbcValue
public int forEachDisassembledJdbcValue(Object value, Clause clause, int offset, Bindable.JdbcValuesConsumer valuesConsumer, SharedSessionContractImplementor session)
- Specified by:
forEachDisassembledJdbcValuein interfaceBindable
-
forEachJdbcType
public int forEachJdbcType(int offset, IndexedConsumer<JdbcMapping> action)Description copied from interface:JdbcMappingContainerVisit each JdbcMapping starting from the given offset- Specified by:
forEachJdbcTypein interfaceJdbcMappingContainer
-
createDomainResult
public <T> DomainResult<T> createDomainResult(NavigablePath navigablePath, TableGroup tableGroup, String resultVariable, DomainResultCreationState creationState)
Description copied from interface:ModelPartCreate a DomainResult for a specific reference to this ModelPart.- Specified by:
createDomainResultin interfaceModelPart
-
applySqlSelections
public void applySqlSelections(NavigablePath navigablePath, TableGroup tableGroup, DomainResultCreationState creationState)
Description copied from interface:ModelPartApply SQL selections for a specific reference to this ModelPart outside the domain query's root select clause.- Specified by:
applySqlSelectionsin interfaceModelPart
-
applySqlSelections
public void applySqlSelections(NavigablePath navigablePath, TableGroup tableGroup, DomainResultCreationState creationState, BiConsumer<SqlSelection,JdbcMapping> selectionConsumer)
Description copied from interface:ModelPartApply SQL selections for a specific reference to this ModelPart outside the domain query's root select clause.- Specified by:
applySqlSelectionsin interfaceModelPart
-
-