Package org.hibernate.sql.ast.tree.from
Class StandardVirtualTableGroup
- java.lang.Object
-
- org.hibernate.sql.ast.tree.from.AbstractColumnReferenceQualifier
-
- org.hibernate.sql.ast.tree.from.AbstractTableGroup
-
- org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup
-
- All Implemented Interfaces:
DomainResultProducer,SqmPathInterpretation,SqlSelectionProducer,Expression,ColumnReferenceQualifier,TableGroup,VirtualTableGroup,SqlAstNode
public class StandardVirtualTableGroup extends AbstractTableGroup implements VirtualTableGroup
-
-
Constructor Summary
Constructors Constructor Description StandardVirtualTableGroup(NavigablePath navigablePath, ModelPartContainer modelPart, TableGroup underlyingTableGroup, boolean fetched)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddNestedTableGroupJoin(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.voidaddTableGroupJoin(TableGroupJoin join)voidapplyAffectedTableNames(Consumer<String> nameCollector)booleancanUseInnerJoins()ModelPartContainergetExpressionType()The type for this expressionTableReferencegetPrimaryTableReference()StringgetSourceAlias()TableReferencegetTableReference(NavigablePath navigablePath, String tableExpression, boolean resolve)Returns the table reference for the table expression, or null if not found.TableReferencegetTableReference(NavigablePath navigablePath, ValuedModelPart modelPart, String tableExpression, boolean resolve)List<TableReferenceJoin>getTableReferenceJoins()TableGroupgetUnderlyingTableGroup()booleanisFetched()voidprependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join)Adds the given table group join before a join as found via the given navigable path.-
Methods inherited from class org.hibernate.sql.ast.tree.from.AbstractTableGroup
getGroupAlias, getModelPart, getNavigablePath, getNestedTableGroupJoins, getSessionFactory, getSqlAliasBase, getTableGroupJoins, isRealTableGroup, toString, visitNestedTableGroupJoins, visitTableGroupJoins
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier
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
getSqlExpression
-
Methods inherited from interface org.hibernate.sql.ast.tree.from.TableGroup
accept, applySqlSelections, createDomainResult, findCompatibleJoin, findCompatibleJoinedGroup, findTableGroupJoin, getGroupAlias, getModelPart, getNavigablePath, getNestedTableGroupJoins, getTableGroupJoins, hasRealJoins, isInitialized, isLateral, isRealTableGroup, visitNestedTableGroupJoins, visitTableGroupJoins
-
Methods inherited from interface org.hibernate.sql.ast.tree.from.VirtualTableGroup
isVirtual
-
-
-
-
Constructor Detail
-
StandardVirtualTableGroup
public StandardVirtualTableGroup(NavigablePath navigablePath, ModelPartContainer modelPart, TableGroup underlyingTableGroup, boolean fetched)
-
-
Method Detail
-
getExpressionType
public ModelPartContainer getExpressionType()
Description copied from interface:ExpressionThe type for this expression- Specified by:
getExpressionTypein interfaceExpression- Specified by:
getExpressionTypein interfaceSqmPathInterpretation- Overrides:
getExpressionTypein classAbstractTableGroup
-
getUnderlyingTableGroup
public TableGroup getUnderlyingTableGroup()
- Specified by:
getUnderlyingTableGroupin interfaceVirtualTableGroup
-
isFetched
public boolean isFetched()
- Specified by:
isFetchedin interfaceTableGroup
-
getSourceAlias
public String getSourceAlias()
- Specified by:
getSourceAliasin interfaceTableGroup- Overrides:
getSourceAliasin classAbstractTableGroup
-
canUseInnerJoins
public boolean canUseInnerJoins()
- Specified by:
canUseInnerJoinsin interfaceTableGroup- Overrides:
canUseInnerJoinsin classAbstractTableGroup
-
applyAffectedTableNames
public void applyAffectedTableNames(Consumer<String> nameCollector)
- Specified by:
applyAffectedTableNamesin interfaceTableGroup
-
getPrimaryTableReference
public TableReference getPrimaryTableReference()
- Specified by:
getPrimaryTableReferencein interfaceTableGroup- Specified by:
getPrimaryTableReferencein classAbstractColumnReferenceQualifier
-
getTableReferenceJoins
public List<TableReferenceJoin> getTableReferenceJoins()
- Specified by:
getTableReferenceJoinsin interfaceTableGroup- Specified by:
getTableReferenceJoinsin classAbstractColumnReferenceQualifier
-
addTableGroupJoin
public void addTableGroupJoin(TableGroupJoin join)
- Specified by:
addTableGroupJoinin interfaceTableGroup- Overrides:
addTableGroupJoinin classAbstractTableGroup
-
prependTableGroupJoin
public void prependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join)
Description copied from interface:TableGroupAdds the given table group join before a join as found via the given navigable path.- Specified by:
prependTableGroupJoinin interfaceTableGroup- Overrides:
prependTableGroupJoinin classAbstractTableGroup
-
addNestedTableGroupJoin
public void addNestedTableGroupJoin(TableGroupJoin join)
Description copied from interface:TableGroupA 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- Specified by:
addNestedTableGroupJoinin interfaceTableGroup- Overrides:
addNestedTableGroupJoinin classAbstractTableGroup
-
getTableReference
public TableReference getTableReference(NavigablePath navigablePath, String tableExpression, boolean resolve)
Description copied from interface:ColumnReferenceQualifierReturns the table reference for the table expression, or null if not found.- Specified by:
getTableReferencein interfaceColumnReferenceQualifier- Overrides:
getTableReferencein classAbstractColumnReferenceQualifier- Parameters:
navigablePath- The path for which to look up the table reference, may be nulltableExpression- The table expression for which to look up the table referenceresolve- Whether to potentially create table reference joins for this table group
-
getTableReference
public TableReference getTableReference(NavigablePath navigablePath, ValuedModelPart modelPart, String tableExpression, boolean resolve)
- Specified by:
getTableReferencein interfaceColumnReferenceQualifier
-
-