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

Group together TableReference references related to a single entity or collection, along with joins to other TableGroups
  • Method Details

    • getNavigablePath

      NavigablePath getNavigablePath()
      Specified by:
      getNavigablePath in interface SqmPathInterpretation
    • 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 as TableGroup( 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)
    • applyAffectedTableNames

      void applyAffectedTableNames(Consumer<String> nameCollector)
    • 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 interface DomainResultProducer
    • 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 interface DomainResultProducer
    • accept

      default void accept(SqlAstWalker sqlTreeWalker)
      Specified by:
      accept in interface SqlAstNode
    • 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

      default TableGroupJoin findTableGroupJoin(TableGroup tableGroup)
    • hasRealJoins

      default boolean hasRealJoins()
    • isVirtual

      default boolean isVirtual()
      Utility method that indicates weather this table group is virtual or not
    • findTableReference

      default TableReference findTableReference(String identificationVariable)