Package org.hibernate.query.sqm
@Incubating
package org.hibernate.query.sqm
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 classSemanticQueryBuilder
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,SqmFrom
implements
From
.
Our implementation of the JPA
CriteriaBuilder
interface is
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 packageorg.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
StandardSqmTranslator
and a SqlAstTranslator
.- API Note:
- This entire package is in an incubating state.
-
ClassDescriptionOccurs when the HQL query declares a duplicate identification variable in the
from
clause, or a duplicate result column alias in theselect
clause.Enumeration of standard binary arithmetic operatorsDefines the set of basic types which should be accepted by thecast()
function on every platform.Defines the comparison operators.Represents the type of instantiation to be performed.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.The kind of fetch to use for theFETCH
clause.Represents a generic unhandled problem which occurred while translating HQL/JPQL.The different types of intervals that SQL defines.Adapts the JPA CriteriaBuilder to generate SQM nodes.Occurs when an unexpected condition is encountered while interpreting the output of the HQL parser.Indicates that an element of a path did not resolve to a mapped program element.Support for walking a Semantic Query Model (SQM) treeThe SQL set operators.Anything in the application domain model that can be used in an SQM query as an expressionSqmJoinable<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"? - the result type would need to change to just SqmJoin...Represents any part of the domain model which can be used to create aSqmPath
node.Informational - used to identify the source of an SQM statement.Logger used to log information about the creation of an SQM tree.Indicates violations of strict JPQL syntax while strict JPQL syntax checking was enabled.A temporal field type which can occur as an argument toextract()
or as the unit of a duration expression.Indicates an attempt to dereference a terminal path (usually a path referring to something of basic type)Indicates a failure to resolve an entity name in HQL to a known mapped entity type.Indicates a failure to resolve an element of a path expression in HQL/JPQL.