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 voidaccept(SqlAstWalker sqlTreeWalker) voidA 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.voidvoidapplyAffectedTableNames(Consumer<String> nameCollector) default voidapplySqlSelections(DomainResultCreationState creationState) Used when this producer is a selection in a sub-query.booleandefault DomainResultcreateDomainResult(String resultVariable, DomainResultCreationState creationState) Produce the domain querydefault TableGroupJoinfindCompatibleJoin(TableGroupJoinProducer joinProducer, SqlAstJoinType requestedJoinType) default TableGroupfindCompatibleJoinedGroup(TableGroupJoinProducer joinProducer, SqlAstJoinType requestedJoinType) default TableGroupJoinfindTableGroupJoin(TableGroup tableGroup) default TableReferencefindTableReference(String identificationVariable) If we want to use CTE for TableGroup rendering we will need to know the alias we can use for the groupdefault booleandefault booleandefault booleanIf 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 booleandefault booleandefault booleanUtility method that indicates weather this table group is virtual or notvoidprependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join) Adds the given table group join before a join as found via the given navigable path.voidvisitNestedTableGroupJoins(Consumer<TableGroupJoin> consumer) voidvisitTableGroupJoins(Consumer<TableGroupJoin> consumer) Methods inherited from interface org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier
getTableReference, getTableReference, getTableReference, getTableReference, resolveTableReference, resolveTableReference, resolveTableReferenceMethods inherited from interface org.hibernate.sql.ast.tree.expression.Expression
createDomainResultSqlSelection, createSqlSelection, getColumnReferenceMethods inherited from interface org.hibernate.query.sqm.sql.internal.SqmPathInterpretation
getAffectedTableName, 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 = 1is 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:DomainResultProducerProduce the domain query- Specified by:
createDomainResultin interfaceDomainResultProducer
-
applySqlSelections
Description copied from interface:DomainResultProducerUsed 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:
applySqlSelectionsin interfaceDomainResultProducer
-
accept
- Specified by:
acceptin 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