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
,EmbeddableFunctionTableGroup
,FunctionTableGroup
,LazyTableGroup
,MappedByTableGroup
,MutatingTableReferenceGroupWrapper
,OneToManyTableGroup
,QueryPartTableGroup
,StandardTableGroup
,StandardVirtualTableGroup
,TableGroupImpl
,UnionTableGroup
,ValuesTableGroup
public interface TableGroup
extends SqlAstNode, ColumnReferenceQualifier, SqmPathInterpretation, DomainResultProducer
Group together
TableReference
references related to a single entity or
collection, along with joins to other TableGroups-
Method Summary
Modifier and TypeMethodDescriptiondefault void
accept
(SqlAstWalker sqlTreeWalker) void
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
void
applyAffectedTableNames
(Consumer<String> nameCollector) default void
applySqlSelections
(DomainResultCreationState creationState) Used when this producer is a selection in a sub-query.boolean
default DomainResult
createDomainResult
(String resultVariable, DomainResultCreationState creationState) Produce the domain querydefault TableGroupJoin
findCompatibleJoin
(TableGroupJoinProducer joinProducer, SqlAstJoinType requestedJoinType) default TableGroup
findCompatibleJoinedGroup
(TableGroupJoinProducer joinProducer, SqlAstJoinType requestedJoinType) default TableGroupJoin
findTableGroupJoin
(TableGroup tableGroup) default TableReference
findTableReference
(String identificationVariable) If we want to use CTE for TableGroup rendering we will need to know the alias we can use for the groupdefault boolean
default boolean
default boolean
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
default boolean
default boolean
Utility method that indicates weather this table group is virtual or notvoid
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, getTableReference, resolveTableReference, resolveTableReference, resolveTableReference
Methods inherited from interface org.hibernate.sql.ast.tree.expression.Expression
createDomainResultSqlSelection, createSqlSelection, getColumnReference
Methods inherited from interface org.hibernate.query.sqm.sql.internal.SqmPathInterpretation
getExpressionType, getSqlExpression
-
Method Details
-
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
-
addNestedTableGroupJoin
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
-
visitNestedTableGroupJoins
-
applyAffectedTableNames
-
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
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
- 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. -
findCompatibleJoin
default TableGroupJoin findCompatibleJoin(TableGroupJoinProducer joinProducer, SqlAstJoinType requestedJoinType) -
findCompatibleJoinedGroup
default TableGroup findCompatibleJoinedGroup(TableGroupJoinProducer joinProducer, SqlAstJoinType requestedJoinType) -
findTableGroupJoin
-
hasRealJoins
default boolean hasRealJoins() -
isVirtual
default boolean isVirtual()Utility method that indicates weather this table group is virtual or not -
findTableReference