Top Description Inners Fields Constructors Methods
org.hibernate.query.hql.internal

public Class SemanticQueryBuilder<R>

extends HqlParserBaseVisitor<Object>
implements SqmCreationState
Class Inheritance
All Implemented Interfaces
org.hibernate.query.hql.spi.SqmCreationState
Imports
java.math.BigDecimal, .BigInteger, java.sql.Date, .Time, .Timestamp, java.time.DateTimeException, .Duration, .Instant, .LocalDate, .LocalDateTime, .LocalTime, .OffsetDateTime, .ZoneId, .ZoneOffset, .ZonedDateTime, java.time.temporal.TemporalAccessor, java.util.ArrayList, .Calendar, .GregorianCalendar, .HashMap, .HashSet, .List, .Locale, .Map, .Set, org.hibernate.boot.registry.classloading.spi.ClassLoaderService, .ClassLoadingException, org.hibernate.grammars.hql.HqlLexer, .HqlParser, .HqlParserBaseVisitor, org.hibernate.internal.util.CharSequenceHelper, .QuotingHelper, org.hibernate.internal.util.collections.Stack, .StandardStack, org.hibernate.metamodel.CollectionClassification, org.hibernate.metamodel.mapping.CollectionPart, org.hibernate.metamodel.mapping.internal.AnyKeyPart, org.hibernate.metamodel.model.domain.BasicDomainType, .DomainType, .EntityDomainType, .IdentifiableDomainType, .ManagedDomainType, .PersistentAttribute, .PluralPersistentAttribute, .SingularPersistentAttribute, org.hibernate.metamodel.model.domain.internal.AnyDiscriminatorSqmPath, .EntitySqmPathSource, org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor, org.hibernate.query.NullPrecedence, .ParameterLabelException, .PathException, .ReturnableType, .SemanticException, .SortDirection, .SyntaxException, org.hibernate.query.criteria.JpaCteCriteria, .JpaCteCriteriaAttribute, .JpaCteCriteriaType, .JpaSearchOrder, org.hibernate.query.hql.HqlLogging, org.hibernate.query.hql.spi.DotIdentifierConsumer, .SemanticPathPart, .SqmCreationOptions, .SqmCreationProcessingState, .SqmCreationState, .SqmPathRegistry, org.hibernate.query.sqm.BinaryArithmeticOperator, .ComparisonOperator, .FetchClauseType, .FrameExclusion, .FrameKind, .FrameMode, .LiteralNumberFormatException, .NodeBuilder, .ParsingException, .SetOperator, .SqmExpressible, .SqmPathSource, .SqmQuerySource, .SqmTreeCreationLogger, .StrictJpaComplianceViolation, .TemporalUnit, .TerminalPathException, .TrimSpec, .UnaryArithmeticOperator, .UnknownEntityException, org.hibernate.query.sqm.function.FunctionKind, .NamedSqmFunctionDescriptor, .SqmFunctionDescriptor, org.hibernate.query.sqm.internal.ParameterCollector, .SqmCreationProcessingStateImpl, .SqmDmlCreationProcessingState, .SqmQueryPartCreationProcessingStateStandardImpl, .TypecheckUtil, org.hibernate.query.sqm.produce.function.FunctionArgumentException, .StandardFunctionReturnTypeResolvers, org.hibernate.query.sqm.spi.ParameterDeclarationContext, .SqmCreationContext, org.hibernate.query.sqm.tree.SqmJoinType, .SqmQuery, .SqmStatement, .SqmTypedNode, org.hibernate.query.sqm.tree.cte.SqmCteContainer, .SqmCteStatement, org.hibernate.query.sqm.tree.delete.SqmDeleteStatement, org.hibernate.query.sqm.tree.domain.AbstractSqmFrom, .SqmAnyValuedSimplePath, .SqmCorrelation, .SqmCteRoot, .SqmDerivedRoot, .SqmElementAggregateFunction, .SqmEntityValuedSimplePath, .SqmFkExpression, .SqmIndexAggregateFunction, .SqmListJoin, .SqmMapEntryReference, .SqmMapJoin, .SqmPath, .SqmPluralValuedSimplePath, .SqmPolymorphicRootDescriptor, org.hibernate.query.sqm.tree.expression.AbstractSqmParameter, .SqmAliasedNodeRef, .SqmAny, .SqmAnyDiscriminatorValue, .SqmBinaryArithmetic, .SqmByUnit, .SqmCaseSearched, .SqmCaseSimple, .SqmCastTarget, .SqmCollation, .SqmCollectionSize, .SqmDistinct, .SqmDurationUnit, .SqmEvery, .SqmExpression, .SqmExtractUnit, .SqmFormat, .SqmFunction, .SqmHqlNumericLiteral, .SqmLiteral, .SqmLiteralEntityType, .SqmLiteralNull, .SqmNamedParameter, .SqmOver, .SqmOverflow, .SqmParameter, .SqmParameterizedEntityType, .SqmPositionalParameter, .SqmStar, .SqmSummarization, .SqmToDuration, .SqmTrimSpecification, .SqmTuple, .SqmUnaryOperation, org.hibernate.query.sqm.tree.from.SqmAttributeJoin, .SqmCrossJoin, .SqmCteJoin, .SqmDerivedJoin, .SqmEntityJoin, .SqmFrom, .SqmFromClause, .SqmJoin, .SqmQualifiedJoin, .SqmRoot, org.hibernate.query.sqm.tree.insert.SqmInsertSelectStatement, .SqmInsertStatement, .SqmInsertValuesStatement, .SqmValues, org.hibernate.query.sqm.tree.predicate.SqmBetweenPredicate, .SqmBooleanExpressionPredicate, .SqmComparisonPredicate, .SqmEmptinessPredicate, .SqmExistsPredicate, .SqmGroupedPredicate, .SqmInListPredicate, .SqmInSubQueryPredicate, .SqmJunctionPredicate, .SqmLikePredicate, .SqmMemberOfPredicate, .SqmNegatablePredicate, .SqmNegatedPredicate, .SqmNullnessPredicate, .SqmPredicate, .SqmTruthnessPredicate, .SqmWhereClause, org.hibernate.query.sqm.tree.select.AbstractSqmSelectQuery, .SqmAliasedNode, .SqmDynamicInstantiation, .SqmDynamicInstantiationArgument, .SqmOrderByClause, .SqmQueryGroup, .SqmQueryPart, .SqmQuerySpec, .SqmSelectClause, .SqmSelectQuery, .SqmSelectStatement, .SqmSelectableNode, .SqmSelection, .SqmSortSpecification, .SqmSubQuery, org.hibernate.query.sqm.tree.update.SqmUpdateStatement, org.hibernate.sql.ast.SqlAstNodeRenderingMode, org.hibernate.sql.ast.tree.cte.CteMaterialization, .CteSearchClauseKind, org.hibernate.type.BasicPluralType, .BasicType, org.hibernate.type.descriptor.java.JavaType, .PrimitiveByteArrayJavaType, org.hibernate.type.descriptor.java.spi.JavaTypeRegistry, .UnknownBasicJavaType, org.hibernate.type.descriptor.jdbc.ObjectJdbcType, org.hibernate.type.internal.BasicTypeImpl, org.hibernate.type.spi.TypeConfiguration, org.jboss.logging.Logger, jakarta.persistence.criteria.Predicate, jakarta.persistence.metamodel.Bindable, .SingularAttribute, org.antlr.v4.runtime.ParserRuleContext, .Token, org.antlr.v4.runtime.tree.ParseTree, .TerminalNode

Responsible for producing an SQM using visitation over an HQL parse tree generated by ANTLR via HqlParseTreeBuilder.
Author
Steve Ebersole

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static enum

Field Summary

Modifier and TypeField and Description
private final SqmCreationContext
private final SqmCreationOptions
private JpaCteCriteria<?>
private final Stack<DotIdentifierConsumer>
private final String
private final Class<R>
private final BasicDomainType<Integer>
private boolean
private static final Set<String>
private final JavaType<List<?>>
private static final Logger
private final JavaType<Map<?, ?>>
private ParameterCollector
private final Stack<ParameterDeclarationContext>
private Map<Object, AbstractSqmParameter<?>>
private SemanticQueryBuilder.ParameterStyle
private final Stack<SqmCreationProcessingState>

Constructor Summary

AccessConstructor and Description
public
SemanticQueryBuilder(Class<R> expectedResultType, SqmCreationOptions creationOptions, SqmCreationContext creationContext)

public
SemanticQueryBuilder(String expectedResultEntity, SqmCreationOptions creationOptions, SqmCreationContext creationContext)

private
SemanticQueryBuilder(Class<R> expectedResultType, String expectedResultEntity, SqmCreationOptions creationOptions, SqmCreationContext creationContext)

Method Summary

Modifier and TypeMethod and Description
private void
private void
protected String
private SqmExpression<?>
private void
private SqmHqlNumericLiteral<BigDecimal>
private SqmHqlNumericLiteral<BigInteger>
private SqmLiteral<byte[]>
private SqmLiteral<Boolean>
booleanLiteral(boolean value)

private SqmFromClause
protected SqmSelectClause
public static <R> SqmStatement<R>
buildSemanticModel(HqlParser.StatementContext hqlParseTree, Class<R> expectedResultType, SqmCreationOptions creationOptions, SqmCreationContext creationContext)

Main entry point into analysis of HQL/JPQL parse tree - producing a semantic model of the query.

private void
private void
checkPluralPath(SqmPath<?> pluralAttributePath, SqmPathSource<?> referencedPathSource, TerminalNode firstNode)

private Class<?>
classForName(String className)

protected <T> void
private SqmPath<?>
private SqmPath<?>
protected <X> void
consumeJoin(HqlParser.JoinContext parserJoin, SqmRoot<X> sqmRoot)

protected void
consumeJpaCollectionJoin(HqlParser.JpaCollectionJoinContext ctx, SqmRoot<?> sqmRoot)

Deprecated syntax dating back to EJB-QL prior to EJB 3, required by JPA, never documented in Hibernate

private SqmPath<?>
private SqmPath<?>
private <X> SqmSubQuery<X>
private SqmComparisonPredicate
createComparisonPredicate(ComparisonOperator comparisonOperator, HqlParser.ExpressionContext leftExpressionContext, HqlParser.ExpressionContext rightExpressionContext)

private <T> SqmExpression<T>
createDiscriminatorValue(AnyDiscriminatorSqmPath<T> anyDiscriminatorTypeSqmPath, HqlParser.ExpressionContext valueExpressionContext)

private SqmQuerySpec<?>
private SqmHqlNumericLiteral<Double>
protected String
public SqmCteStatement<?>
private SqmHqlNumericLiteral<? extends Number>
public SqmCreationContext
public SqmCreationOptions
getCreationOptions()

Implements org.hibernate.query.hql.spi.SqmCreationState.getCreationOptions.

What options should be applied to the creation
public String
private SqmPredicate
private FrameKind
private List<SqmTypedNode<?>>
private SqmFunctionDescriptor
private String
private SqmFunctionDescriptor
private <X> SqmQualifiedJoin<X, ?>
getJoin(SqmRoot<X> sqmRoot, SqmJoinType joinType, HqlParser.JoinTargetContext joinTargetContext, String alias, boolean fetch)

private List<SqmTypedNode<?>>
private Map<Class<?>, Enum<?>>
public Stack<SqmCreationProcessingState>
getProcessingStateStack()

Implements org.hibernate.query.hql.spi.SqmCreationState.getProcessingStateStack.

Access to the stack of current creation processing state.
private EntityDomainType<R>
private static SqmJoinType
private <X> SqmQueryGroup<X>
getSqmQueryGroup(SetOperator operator, HqlParser.OrderedQueryContext simpleQueryCtx, SqmQueryGroup<X> queryGroup, int size, SqmCreationProcessingState firstProcessingState, int i)

private static HqlParser.VariableContext
private SqmHqlNumericLiteral<? extends Number>
private static FunctionKind
private SqmHqlNumericLiteral<Integer>
private boolean
private boolean
private SqmLiteral<String>
private SqmPredicate
private static LocalDate
private SqmLiteral<?>
private static LocalTime
private SqmHqlNumericLiteral<Long>
private static SqmCteStatement<?>
private SqmLiteral<?>
private SqmLiteral<?>
private SqmExpression<?>
resolveEnumShorthandLiteral(HqlParser.ExpressionContext expressionContext, Map<Class<?>, Enum<?>> possibleEnumValues, Class<?> enumType)

private <J> BasicType<J>
private JavaType<?>
private SqmExpression<?>
resolveOrderByOrGroupByExpression(ParseTree child, boolean definedCollate, boolean allowPositionalOrAliases)

private <T extends AbstractSqmParameter<?>> T
resolveParameter(T parameter)

private SqmRoot<?>
resolveRootEntity(HqlParser.EntityNameContext entityNameContext, String name, String alias, SqmCreationProcessingState processingState, SqmPathRegistry pathRegistry)

private <X> void
private void
setOffsetFetchLimit(SqmQueryPart<?> sqmQueryPart, HqlParser.LimitClauseContext limitClauseContext, HqlParser.OffsetClauseContext offsetClauseContext, HqlParser.FetchClauseContext fetchClauseContext)

private SqmLiteral<Date>
private SqmLiteral<Time>
private SqmLiteral<?>
private SqmLiteral<String>
private SqmDurationUnit<Long>
private static TrimSpec
public Object
public Object
public SqmPredicate
public SqmExpression<?>
public SqmBetweenPredicate
public Object
public SqmPredicate
public Object
public SqmExpression<?>
public SqmCastTarget<?>
public Object
public Object
public SqmPath<?>
public SqmCollectionSize
public SqmPath<?>
public Object
public SqmPredicate
public SqmExpression<?>
public final SqmCrossJoin<?>
public Object
public SqmExpression<?>
public SqmExpression<?>
public SqmExpression<?>
public SqmExpression<?>
public Object
public Object
public Object
public Object
public SqmExtractUnit<?>
public Object
public Object
public SqmDeleteStatement<R>
public SqmExpression<?>
public SqmExpression<?>
public SqmPath<?>
public EntityDomainType<?>
public SqmPath<?>
public SqmPath<?>
public Object
public SqmExpression<?>
public SqmPath<?>
public SqmRoot<?>
public SqmExpression<?>
public SqmPredicate
public SqmPredicate
private List<SqmExpression<?>>
public Object
public SqmExpression<?>
private FetchClauseType
private SqmExpression<?>
public Object
public SqmExpression<?>
public SqmFromClause
public Object
public SqmExpression<?>
public Object
public Object
public SemanticPathPart
public Object
public List<SqmTypedNode<?>>
public String
public List<SqmExpression<?>>
public SqmExpression<?>
public Object
public SqmGroupedPredicate
public SqmPredicate
public String
public SqmExpression<?>
private SemanticPathPart
public SemanticPathPart
public SqmPredicate
public SqmInsertStatement<R>
public SqmExpression<?>
public SqmDynamicInstantiation<?>
public SqmDynamicInstantiationArgument<?>
public SqmPredicate
public SqmEmptinessPredicate
public Object
public SqmNullnessPredicate
public Object
public Object
public Object
public Object
public final SqmJoin<?, ?>
public SqmJoin<?, ?>
public SqmExpression<?>
public SqmPath<?>
public Object
public SqmPredicate
public SqmExpression<?>
public Object
public SqmExpression<?>
public SqmExpression<?>
public Object
public SqmExpression<?>
public Object
public SqmExpression<?>
public SqmMapEntryReference<?, ?>
public SqmPath<?>
public SqmPredicate
public Object
public Object
public String
public SqmNamedParameter<?>
private <T> SqmNamedParameter<T>
public SqmPredicate
public SqmQueryPart<?>
public SqmExpression<?>
public Object
public SqmExpression<?>
public Object
public Object
public SqmOrderByClause
private SqmOrderByClause
visitOrderByClause(HqlParser.OrderByClauseContext ctx, boolean allowPositionalOrAliases)

public SqmPredicate
public Object
public SqmLiteral<Character>
public SqmExpression<?>
public SqmTrimSpecification
public Object
public SqmExpression<?>
public SqmExpression<?>
public SemanticPathPart
public SqmPositionalParameter<?>
private <T> SqmPositionalParameter<T>
public Object
public SqmQuerySpec<?>
protected void
public SqmQueryPart<?>
public SqmQueryPart<?>
public SqmExpression<?>
public SqmRoot<?>
public SqmRoot<?>
public SqmCaseSearched<?>
private SqmSelectableNode<?>
public SqmSelectClause
public SqmSelection<?>
public SqmSelectStatement<R>
public SetOperator
public SqmQueryGroup<?>
public Object
public SqmCaseSimple<?, ?>
public SemanticPathPart
public SqmQueryPart<?>
public SqmExpression<?>
public SqmExpression<?>
visitSortExpression(HqlParser.SortExpressionContext ctx, boolean allowPositionalOrAliases)

public SqmSortSpecification
private SqmSortSpecification
visitSortSpecification(HqlParser.SortSpecificationContext ctx, boolean allowPositionalOrAliases)

public SqmStatement<R>
public SqmSubQuery<?>
public SqmSubQuery<?>
public SqmExpression<?>
public SemanticPathPart
public Object
public SqmRoot<R>
public SqmExpression<?>
visitTerminal(TerminalNode
The TerminalNode to visit.
node
)

Overrides org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitTerminal.

Implements org.antlr.v4.runtime.tree.ParseTreeVisitor.visitTerminal.

Visit a terminal node, and return a user-defined result of the operation.
public Object
public Object
public Object
public Object
public Object
public SqmFkExpression<?>
public SqmPath<?>
public SqmExpression<Character>
public SqmExpression<?>
public SqmTrimSpecification
public Object
public Object
public SqmUnaryOperation<?>
public SqmExpression<?>
public SqmUpdateStatement<R>
public String
public Object
public SqmPredicate
public Object
public Object
public Object
public ZoneId
private SqmLiteral<?>
private static ZoneOffset
private static ZoneOffset
Inherited from org.hibernate.grammars.hql.HqlParserBaseVisitor:
visitAggregateFunctionvisitAnySomeQuantifiervisitAssignmentvisitBarePrimaryExpressionvisitBooleanLiteralvisitCaseListvisitCaseOtherwisevisitCastTargetTypevisitCollectionQuantifiervisitCteAttributesvisitCycleClausevisitDayvisitElementsValuesQuantifiervisitElementValueQuantifiervisitEntityTypeReferencevisitEveryAllQuantifiervisitExplicitTupleInListvisitExpressionOrPredicatevisitExtractFieldvisitFetchCountOrPercentvisitFilterClausevisitFrameClausevisitFrameEndvisitFrameExclusionvisitFrameStartvisitFunctionvisitGeneralizedLiteralTextvisitGeneralizedLiteralTypevisitGenericTemporalLiteralTextvisitHourvisitIndexKeyQuantifiervisitIndicesKeysQuantifiervisitInstantiationArgumentExpressionvisitInstantiationArgumentsvisitInstantiationTargetvisitJoinPathvisitJoinRestrictionvisitJoinSubqueryvisitJoinTypevisitJpaNonstandardFunctionNamevisitLiteralvisitMinutevisitMonthvisitNthSideClausevisitNullsClausevisitNullsPrecedencevisitNumericLiteralvisitOffsetvisitOffsetWithMinutesvisitOnOverflowClausevisitOrderByFragmentvisitOverClausevisitOverlayFunctionLengthArgumentvisitOverlayFunctionReplacementArgumentvisitOverlayFunctionStartArgumentvisitOverlayFunctionStringArgumentvisitPadLengthvisitParamInListvisitPartitionClausevisitPathContinuationvisitPersistentCollectionReferenceInListvisitPositionFunctionPatternArgumentvisitPositionFunctionStringArgumentvisitQueryOrdervisitSearchClausevisitSearchedCaseWhenvisitSearchSpecificationvisitSearchSpecificationsvisitSecondvisitSelectExpressionvisitSelectionListvisitSetClausevisitSimpleCaseWhenvisitSimplePathElementvisitSortDirectionvisitStandardFunctionvisitSubqueryInListvisitSubstringFunctionLengthArgumentvisitSubstringFunctionStartArgumentvisitTargetFieldsvisitTemporalLiteralvisitValuesvisitValuesListvisitWithinGroupClausevisitYear