Package org.hibernate.query.sqm.internal
Class SqmUtil
java.lang.Object
org.hibernate.query.sqm.internal.SqmUtil
Helper utilities for dealing with SQM
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
checkQueryReturnType
(SqmQueryPart<?> queryPart, Class<?> expectedResultType) Similar tovalidateQueryReturnType(SqmQueryPart, Class)
but does not check ifisResultTypeAlwaysAllowed(Class)
.static JdbcParameterBindings
createJdbcParameterBindings
(QueryParameterBindings domainParamBindings, DomainParameterXref domainParameterXref, Map<QueryParameterImplementor<?>, Map<SqmParameter<?>, List<JdbcParametersList>>> jdbcParamXref, SqmParameterMappingModelResolutionAccess mappingModelResolutionAccess, SharedSessionContractImplementor session) static Bindable
determineParameterType
(QueryParameterBinding<?> binding, QueryParameterImplementor<?> parameter, List<SqmParameter<?>> sqmParameters, SqmParameterMappingModelResolutionAccess mappingModelResolutionAccess, SessionFactoryImplementor sessionFactory) expectingNonSelect
(SqmStatement<?> sqm, String hqlString) static <T,
A> SqmAttributeJoin<T, A> findCompatibleFetchJoin
(SqmFrom<?, T> sqmFrom, SqmPathSource<A> pathSource, SqmJoinType requestedJoinType) static Map<QueryParameterImplementor<?>,
Map<SqmParameter<?>, List<JdbcParametersList>>> generateJdbcParamsXref
(DomainParameterXref domainParameterXref, JdbcParameterBySqmParameterAccess jdbcParameterBySqmParameterAccess) static List<NavigablePath>
getGroupByNavigablePaths
(SqmQuerySpec<?> querySpec) static List<NavigablePath>
getOrderByNavigablePaths
(SqmQuerySpec<?> querySpec) static ModelPartContainer
getTargetMappingIfNeeded
(SqmPath<?> sqmPath, ModelPartContainer modelPartContainer, SqmToSqlAstConverter sqlAstCreationState) Utility that returns the entity association target's mapping type if the specifiedsqmPath
should be dereferenced using the target table, i.e.static List<NavigablePath>
getWhereClauseNavigablePaths
(SqmQuerySpec<?> querySpec) static boolean
isFkOptimizationAllowed
(SqmPath<?> sqmPath) Deprecated, for removal: This API element is subject to removal in a future version.static boolean
isFkOptimizationAllowed
(SqmPath<?> sqmPath, EntityAssociationMapping associationMapping) Utility that returnsfalse
when the providedsqmPath
is a join that cannot be dereferenced through the foreign key on the associated table, i.e.static boolean
isHqlTuple
(SqmSelection<?> selection) static boolean
isMutation
(SqmStatement<?> sqm) static boolean
isResultTypeAlwaysAllowed
(Class<?> expectedResultClass) static boolean
isSelect
(SqmStatement<?> sqm) static boolean
isSelectionAssignableToResultType
(SqmSelection<?> selection, Class<?> expectedResultType) static Class<?>
resolveExpressibleJavaTypeClass
(SqmExpression<?> expression) resolveParameters
(SqmStatement<?> statement) static void
validateQueryReturnType
(SqmQueryPart<?> queryPart, @Nullable Class<?> expectedResultType) Used to validate that the specified query return type is valid (i.e.static void
verifyIsNonSelectStatement
(SqmStatement<?> sqm, String hqlString) static void
verifyIsSelectStatement
(SqmStatement<?> sqm, String hqlString) protected static void
verifyResultType
(Class<?> resultClass, @Nullable SqmExpressible<?> selectionExpressible)
-
Method Details
-
isSelect
-
isMutation
-
verifyIsSelectStatement
-
verifyIsNonSelectStatement
-
expectingNonSelect
public static IllegalQueryOperationException expectingNonSelect(SqmStatement<?> sqm, String hqlString) -
getTargetMappingIfNeeded
public static ModelPartContainer getTargetMappingIfNeeded(SqmPath<?> sqmPath, ModelPartContainer modelPartContainer, SqmToSqlAstConverter sqlAstCreationState) Utility that returns the entity association target's mapping type if the specifiedsqmPath
should be dereferenced using the target table, i.e. when the path's lhs is an explicit join that is used in the group by clause, or defaults to the providedmodelPartContainer
otherwise. -
isFkOptimizationAllowed
@Deprecated(forRemoval=true, since="6.6.1") public static boolean isFkOptimizationAllowed(SqmPath<?> sqmPath) Deprecated, for removal: This API element is subject to removal in a future version.Utility that returnsfalse
when the providedsqmPath
is a join that cannot be dereferenced through the foreign key on the associated table, i.e. a join that's neither SqmJoinType.INNER nor SqmJoinType.LEFT or one that has an explicit on clause predicate. -
isFkOptimizationAllowed
public static boolean isFkOptimizationAllowed(SqmPath<?> sqmPath, EntityAssociationMapping associationMapping) Utility that returnsfalse
when the providedsqmPath
is a join that cannot be dereferenced through the foreign key on the associated table, i.e. a join that's neither SqmJoinType.INNER nor SqmJoinType.LEFT or one that has an explicit on clause predicate. -
findCompatibleFetchJoin
public static <T,A> SqmAttributeJoin<T,A> findCompatibleFetchJoin(SqmFrom<?, T> sqmFrom, SqmPathSource<A> pathSource, SqmJoinType requestedJoinType) -
generateJdbcParamsXref
public static Map<QueryParameterImplementor<?>,Map<SqmParameter<?>, generateJdbcParamsXrefList<JdbcParametersList>>> (DomainParameterXref domainParameterXref, JdbcParameterBySqmParameterAccess jdbcParameterBySqmParameterAccess) -
determineParameterType
public static Bindable determineParameterType(QueryParameterBinding<?> binding, QueryParameterImplementor<?> parameter, List<SqmParameter<?>> sqmParameters, SqmParameterMappingModelResolutionAccess mappingModelResolutionAccess, SessionFactoryImplementor sessionFactory) -
resolveParameters
-
isSelectionAssignableToResultType
public static boolean isSelectionAssignableToResultType(SqmSelection<?> selection, Class<?> expectedResultType) -
isHqlTuple
-
resolveExpressibleJavaTypeClass
-
validateQueryReturnType
public static void validateQueryReturnType(SqmQueryPart<?> queryPart, @Nullable Class<?> expectedResultType) Used to validate that the specified query return type is valid (i.e. the user did not passInteger.class
when the selection is an entity) -
checkQueryReturnType
Similar tovalidateQueryReturnType(SqmQueryPart, Class)
but does not check ifisResultTypeAlwaysAllowed(Class)
. -
isResultTypeAlwaysAllowed
-
verifyResultType
protected static void verifyResultType(Class<?> resultClass, @Nullable SqmExpressible<?> selectionExpressible)
-
isFkOptimizationAllowed(SqmPath, EntityAssociationMapping)
instead