Package org.hibernate.sql.ast.tree.from
Interface TableGroup
-
- All Superinterfaces:
ColumnReferenceQualifier
,DomainResultProducer
,Expression
,SqlAstNode
,SqlSelectionProducer
,SqmPathInterpretation
- All Known Subinterfaces:
PluralTableGroup
,VirtualTableGroup
- All Known Implementing Classes:
AbstractTableGroup
,CollectionTableGroup
,CorrelatedPluralTableGroup
,CorrelatedTableGroup
,CteTableGroup
,DelegatingTableGroup
,FunctionTableGroup
,LazyTableGroup
,MappedByTableGroup
,MutatingTableReferenceGroupWrapper
,OneToManyTableGroup
,QueryPartTableGroup
,StandardTableGroup
,StandardVirtualTableGroup
,TableGroupImpl
,UnionTableGroup
,ValuesTableGroup
public interface TableGroup extends SqlAstNode, ColumnReferenceQualifier, SqmPathInterpretation, DomainResultProducer
Group togetherTableReference
references related to a single entity or collection, along with joins to other TableGroups
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default void
accept(SqlAstWalker sqlTreeWalker)
void
addNestedTableGroupJoin(TableGroupJoin join)
A nested table group join is a join against a table group, that is ensured to be joined against the primary table reference and table reference joins in isolation, prior to doing other table group joins e.g.void
addTableGroupJoin(TableGroupJoin join)
void
applyAffectedTableNames(Consumer<String> nameCollector)
default void
applySqlSelections(DomainResultCreationState creationState)
Used when this producer is a selection in a sub-query.boolean
canUseInnerJoins()
default DomainResult
createDomainResult(String resultVariable, DomainResultCreationState creationState)
Produce the domain queryString
getGroupAlias()
If we want to use CTE for TableGroup rendering we will need to know the alias we can use for the groupModelPartContainer
getModelPart()
NavigablePath
getNavigablePath()
List<TableGroupJoin>
getNestedTableGroupJoins()
TableReference
getPrimaryTableReference()
String
getSourceAlias()
List<TableGroupJoin>
getTableGroupJoins()
List<TableReferenceJoin>
getTableReferenceJoins()
default boolean
isFetched()
default boolean
isInitialized()
If this is a lazy table group, it may report that it is not initialized, which would also mean that a join referring to this table group should not be rendered.default boolean
isLateral()
default boolean
isRealTableGroup()
void
prependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join)
Adds the given table group join before a join as found via the given navigable path.void
visitNestedTableGroupJoins(Consumer<TableGroupJoin> consumer)
void
visitTableGroupJoins(Consumer<TableGroupJoin> consumer)
-
Methods inherited from interface org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier
getTableReference, getTableReference, getTableReference, resolveTableReference, resolveTableReference, resolveTableReference
-
Methods inherited from interface org.hibernate.sql.ast.tree.expression.Expression
createSqlSelection, getColumnReference
-
Methods inherited from interface org.hibernate.query.sqm.sql.internal.SqmPathInterpretation
getExpressionType, getSqlExpression
-
-
-
-
Method Detail
-
getNavigablePath
NavigablePath getNavigablePath()
- Specified by:
getNavigablePath
in interfaceSqmPathInterpretation
-
getGroupAlias
String getGroupAlias()
If we want to use CTE for TableGroup rendering we will need to know the alias we can use for the group
-
getModelPart
ModelPartContainer getModelPart()
-
getSourceAlias
String getSourceAlias()
-
getTableGroupJoins
List<TableGroupJoin> getTableGroupJoins()
-
getNestedTableGroupJoins
List<TableGroupJoin> getNestedTableGroupJoins()
-
canUseInnerJoins
boolean canUseInnerJoins()
-
isLateral
default boolean isLateral()
-
addTableGroupJoin
void addTableGroupJoin(TableGroupJoin join)
-
prependTableGroupJoin
void prependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join)
Adds the given table group join before a join as found via the given navigable path.
-
addNestedTableGroupJoin
void addNestedTableGroupJoin(TableGroupJoin join)
A nested table group join is a join against a table group, that is ensured to be joined against the primary table reference and table reference joins in isolation, prior to doing other table group joins e.g.select * from entity1 e left join ( collection_table c1 join association a on a.id = c1.target_id ) on c1.entity_id = e.id and c1.key = 1
is modeled asTableGroup( primaryTableReference = TableReference(entity1, e), tableGroupJoins = [ TableGroupJoin( TableGroup( primaryTableReference = TableReference(collection_table, c1), nestedTableGroupJoins = [ TableGroupJoin( TableGroup( primaryTableReference = TableReference(association, a) ) ) ] ) ) ] )
This is necessary to correctly retain the cardinality of an HQL join like e.g.from Entity1 e left join e.collectionAssociation c on key(c) = 1
-
visitTableGroupJoins
void visitTableGroupJoins(Consumer<TableGroupJoin> consumer)
-
visitNestedTableGroupJoins
void visitNestedTableGroupJoins(Consumer<TableGroupJoin> consumer)
-
getPrimaryTableReference
TableReference getPrimaryTableReference()
-
getTableReferenceJoins
List<TableReferenceJoin> getTableReferenceJoins()
-
createDomainResult
default DomainResult createDomainResult(String resultVariable, DomainResultCreationState creationState)
Description copied from interface:DomainResultProducer
Produce the domain query- Specified by:
createDomainResult
in interfaceDomainResultProducer
-
applySqlSelections
default void applySqlSelections(DomainResultCreationState creationState)
Description copied from interface:DomainResultProducer
Used when this producer is a selection in a sub-query. The DomainResult is only needed for root query of a SELECT statement. This default impl assumes this producer is a true (Sql)Expression- Specified by:
applySqlSelections
in interfaceDomainResultProducer
-
accept
default void accept(SqlAstWalker sqlTreeWalker)
- Specified by:
accept
in interfaceSqlAstNode
-
isRealTableGroup
default boolean isRealTableGroup()
-
isFetched
default boolean isFetched()
-
isInitialized
default boolean isInitialized()
If this is a lazy table group, it may report that it is not initialized, which would also mean that a join referring to this table group should not be rendered.
-
-