Top Fields Constructors Methods
org.hibernate.sql.ast.tree.from

public Class StandardVirtualTableGroup

extends AbstractTableGroup
implements VirtualTableGroup
Class Inheritance
All Implemented Interfaces
org.hibernate.sql.ast.tree.from.VirtualTableGroup, org.hibernate.sql.ast.tree.from.TableGroup, org.hibernate.query.sqm.sql.internal.DomainResultProducer, org.hibernate.query.sqm.sql.internal.SqmPathInterpretation, org.hibernate.sql.ast.tree.expression.Expression, org.hibernate.sql.ast.spi.SqlSelectionProducer, org.hibernate.sql.ast.tree.SqlAstNode, org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier
Imports
java.util.List, java.util.function.Consumer, org.hibernate.metamodel.mapping.EmbeddableMappingType, .MappingType, .ModelPartContainer, .OwnedValuedModelPart, .ValuedModelPart, org.hibernate.spi.NavigablePath

Author
Christian Beikov

Field Summary

Modifier and TypeField and Description
private final boolean
private final TableGroup

Constructor Summary

AccessConstructor and Description
public
StandardVirtualTableGroup(NavigablePath navigablePath, ModelPartContainer modelPart, TableGroup underlyingTableGroup, boolean fetched)

Method Summary

Modifier and TypeMethod and Description
public void
addNestedTableGroupJoin(TableGroupJoin join)

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.addNestedTableGroupJoin.

Implements org.hibernate.sql.ast.tree.from.TableGroup.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 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
public void
public void
public boolean
public ModelPartContainer
public TableReference
public String
public TableReference
getTableReference(NavigablePath
The path for which to look up the table reference, may be null
navigablePath
,
String
The table expression for which to look up the table reference
tableExpression
,
boolean
Whether to potentially create table reference joins for this table group
resolve
)

Overrides org.hibernate.sql.ast.tree.from.AbstractColumnReferenceQualifier.getTableReference.

Implements org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier.getTableReference.

Returns the table reference for the table expression, or null if not found.
public TableReference
public List<TableReferenceJoin>
public TableGroup
public boolean
public void
prependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join)

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.prependTableGroupJoin.

Implements org.hibernate.sql.ast.tree.from.TableGroup.prependTableGroupJoin.

Adds the given table group join before a join as found via the given navigable path.
private void
Inherited from org.hibernate.sql.ast.tree.from.AbstractTableGroup:
getGroupAliasgetModelPartgetNavigablePathgetNestedTableGroupJoinsgetSessionFactorygetSqlAliasBasegetTableGroupJoinsisRealTableGrouptoStringvisitNestedTableGroupJoinsvisitTableGroupJoins

Field Detail

fetchedback to summary
private final boolean fetched
underlyingTableGroupback to summary
private final TableGroup underlyingTableGroup

Constructor Detail

StandardVirtualTableGroupback to summary
public StandardVirtualTableGroup(NavigablePath navigablePath, ModelPartContainer modelPart, TableGroup underlyingTableGroup, boolean fetched)

Method Detail

addNestedTableGroupJoinback to summary
public void addNestedTableGroupJoin(TableGroupJoin join)

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.addNestedTableGroupJoin.

Implements org.hibernate.sql.ast.tree.from.TableGroup.addNestedTableGroupJoin.

Doc from org.hibernate.sql.ast.tree.from.TableGroup.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 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

Annotations
@Override
addTableGroupJoinback to summary
public void addTableGroupJoin(TableGroupJoin join)

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.addTableGroupJoin.

Implements org.hibernate.sql.ast.tree.from.TableGroup.addTableGroupJoin.

Annotations
@Override
applyAffectedTableNamesback to summary
public void applyAffectedTableNames(Consumer<String> nameCollector)

Implements org.hibernate.sql.ast.tree.from.TableGroup.applyAffectedTableNames.

Annotations
@Override
canUseInnerJoinsback to summary
public boolean canUseInnerJoins()

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.canUseInnerJoins.

Implements org.hibernate.sql.ast.tree.from.TableGroup.canUseInnerJoins.

Annotations
@Override
getExpressionTypeback to summary
public ModelPartContainer getExpressionType()

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.getExpressionType.

Implements org.hibernate.query.sqm.sql.internal.SqmPathInterpretation.getExpressionType.

Doc from org.hibernate.sql.ast.tree.expression.Expression.getExpressionType.

The type for this expression

Annotations
@Override
getPrimaryTableReferenceback to summary
public TableReference getPrimaryTableReference()

Implements abstract org.hibernate.sql.ast.tree.from.AbstractColumnReferenceQualifier.getPrimaryTableReference.

Implements org.hibernate.sql.ast.tree.from.TableGroup.getPrimaryTableReference.

Annotations
@Override
getSourceAliasback to summary
public String getSourceAlias()

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.getSourceAlias.

Implements org.hibernate.sql.ast.tree.from.TableGroup.getSourceAlias.

Annotations
@Override
getTableReferenceback to summary
public TableReference getTableReference(NavigablePath navigablePath, String tableExpression, boolean resolve)

Overrides org.hibernate.sql.ast.tree.from.AbstractColumnReferenceQualifier.getTableReference.

Implements org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier.getTableReference.

Doc from org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier.getTableReference.

Returns the table reference for the table expression, or null if not found.

Parameters
navigablePath:NavigablePath

The path for which to look up the table reference, may be null

tableExpression:String

The table expression for which to look up the table reference

resolve:boolean

Whether to potentially create table reference joins for this table group

Annotations
@Override
getTableReferenceback to summary
public TableReference getTableReference(NavigablePath navigablePath, ValuedModelPart modelPart, String tableExpression, boolean resolve)

Overrides default org.hibernate.sql.ast.tree.from.ColumnReferenceQualifier.getTableReference.

Annotations
@Override
getTableReferenceJoinsback to summary
public List<TableReferenceJoin> getTableReferenceJoins()

Implements abstract org.hibernate.sql.ast.tree.from.AbstractColumnReferenceQualifier.getTableReferenceJoins.

Implements org.hibernate.sql.ast.tree.from.TableGroup.getTableReferenceJoins.

Annotations
@Override
getUnderlyingTableGroupback to summary
public TableGroup getUnderlyingTableGroup()

Implements org.hibernate.sql.ast.tree.from.VirtualTableGroup.getUnderlyingTableGroup.

Annotations
@Override
isFetchedback to summary
public boolean isFetched()

Overrides default org.hibernate.sql.ast.tree.from.TableGroup.isFetched.

Annotations
@Override
prependTableGroupJoinback to summary
public void prependTableGroupJoin(NavigablePath navigablePath, TableGroupJoin join)

Overrides org.hibernate.sql.ast.tree.from.AbstractTableGroup.prependTableGroupJoin.

Implements org.hibernate.sql.ast.tree.from.TableGroup.prependTableGroupJoin.

Doc from org.hibernate.sql.ast.tree.from.TableGroup.prependTableGroupJoin.

Adds the given table group join before a join as found via the given navigable path.

Annotations
@Override
registerPredicateOnCorrelatedTableGroupback to summary
private void registerPredicateOnCorrelatedTableGroup(TableGroupJoin join)