Top Description Interfaces Classes Enums
[default module]

Package org.hibernate.query.sqm

Annotations
@Incubating
Imports
org.hibernate.Incubating

This package defines a semantic model of HQL queries.

Semantic Query Model (SQM)

An SQM is a tree representing the semantic interpretation of a query. It's "semantic" in the sense that it contains more information than a simple syntax tree.

HQL

HQL is interpreted as an SQM with the help of an ANTRL-generated parser. The class org.hibernate.query.hql.internal.SemanticQueryBuilder is responsible for visiting the syntax tree produced by the parser and building an SQM.

Criteria queries

The SQM tree nodes directly implement the JPA criteria query contracts. For example, org.hibernate.query.sqm.tree.from.SqmFrom implements jakarta.persistence.criteria.From.

Our implementation of the JPA jakarta.persistence.criteria.CriteriaBuilder interface is org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder. It instantiates SQM nodes and arranges them into SQM tree using the standard operations for building a JPA criteria query.

Transforming SQM to SQL

The package org.hibernate.sql.ast defines an AST representing SQL. To generate SQL from SQM, we must transform the SQM tree to a SQL AST tree. This process is described here, and is handled by a org.hibernate.query.sqm.sql.internal.StandardSqmTranslator and a org.hibernate.sql.ast.SqlAstTranslator.

API Note

This entire package is in an incubating state.

Interface Summary

Modifier and TypeInterface and Description
public interface
NodeBuilder

Adapts the JPA CriteriaBuilder to generate SQM nodes.

public interface
SemanticQueryWalker<T>

Support for walking a Semantic Query Model (SQM) tree

public interface
SqmExpressible<J>

Anything in the application domain model that can be used in an SQM query as an expression

public interface
SqmJoinable<O, E>

Specialization for attributes that that can be used in creating SQM joins todo (6.0) : should we define this for entities as well to handle cross joins and "entity joins"?

public interface
SqmPathSource<J>

Represents any part of the domain model which can be used to create a SqmPath node.

public interface
public interface
SqmTreeCreationLogger

Logger used to log information about the creation of an SQM tree.

public interface

Class Summary

Modifier and TypeClass and Description
public class
public class
EntityTypeException

Indicates that a reference to an entity, that is, a given entity name or Java class object, did not resolve to a known mapped entity type.

public class
InterpretationException

Represents a generic unhandled problem which occurred while translating HQL/JPQL.

public class
public class
ParsingException

Occurs when an unexpected condition is encountered while interpreting the output of the HQL parser.

public class
PathElementException

Indicates that an element of a path did not resolve to a mapped program element.

public class
StrictJpaComplianceViolation

Indicates violations of strict JPQL syntax while strict JPQL syntax checking was enabled.

public class
TerminalPathException

Indicates an attempt to dereference a terminal path (usually a path referring to something of basic type)

public class
UnknownEntityException

Indicates a failure to resolve an entity name in HQL to a known mapped entity type.

public class
UnknownPathException

Indicates a failure to resolve an element of a path expression in HQL/JPQL.

Enum Summary

Modifier and TypeEnum and Description
public enum
BinaryArithmeticOperator

Enumeration of standard binary arithmetic operators

public enum
CastType

Defines the set of basic types which should be accepted by the cast() function on every platform.

public enum
ComparisonOperator

Defines the comparison operators.

public enum
DynamicInstantiationNature

Represents the type of instantiation to be performed.

public enum
FetchClauseType

The kind of fetch to use for the FETCH clause.

public enum
public enum
public enum
public enum
IntervalType

The different types of intervals that SQL defines.

public enum
SetOperator

The SQL set operators.

public enum
SqmQuerySource

Informational - used to identify the source of an SQM statement.

public enum
TemporalUnit

A temporal field type which can occur as an argument to extract() or as the unit of a duration expression.

public enum
public enum