Class NamedSqmFunctionDescriptor
- java.lang.Object
-
- org.hibernate.query.sqm.function.AbstractSqmFunctionDescriptor
-
- org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor
-
- org.hibernate.query.sqm.function.NamedSqmFunctionDescriptor
-
- All Implemented Interfaces:
FunctionRenderingSupport,SqmFunctionDescriptor
- Direct Known Subclasses:
OracleSpatialFunction,StandardSQLFunction
public class NamedSqmFunctionDescriptor extends AbstractSqmSelfRenderingFunctionDescriptor
Provides a standard implementation that supports the majority of the HQL functions that are translated to SQL. The Dialect and its sub-classes use this class to provide details required for processing of the associated function.
-
-
Constructor Summary
Constructors Constructor Description NamedSqmFunctionDescriptor(String functionName, boolean useParenthesesWhenNoArgs, ArgumentsValidator argumentsValidator, FunctionReturnTypeResolver returnTypeResolver)NamedSqmFunctionDescriptor(String functionName, boolean useParenthesesWhenNoArgs, ArgumentsValidator argumentsValidator, FunctionReturnTypeResolver returnTypeResolver, FunctionArgumentTypeResolver argumentTypeResolver)NamedSqmFunctionDescriptor(String functionName, boolean useParenthesesWhenNoArgs, ArgumentsValidator argumentsValidator, FunctionReturnTypeResolver returnTypeResolver, FunctionArgumentTypeResolver argumentTypeResolver, String name, FunctionKind functionKind, String argumentListSignature, SqlAstNodeRenderingMode argumentRenderingMode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanalwaysIncludesParentheses()Will a call to the described function always include parentheses?StringgetArgumentListSignature()StringgetName()Function name accessorvoidrender(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, SqlAstTranslator<?> translator)voidrender(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, Predicate filter, Boolean respectNulls, Boolean fromFirst, SqlAstTranslator<?> walker)voidrender(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, Predicate filter, List<SortSpecification> withinGroup, SqlAstTranslator<?> translator)voidrender(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, Predicate filter, SqlAstTranslator<?> translator)StringtoString()-
Methods inherited from class org.hibernate.query.sqm.function.AbstractSqmSelfRenderingFunctionDescriptor
generateSqmAggregateFunctionExpression, generateSqmFunctionExpression, generateSqmOrderedSetAggregateFunctionExpression, generateSqmWindowFunctionExpression, getFunctionKind
-
Methods inherited from class org.hibernate.query.sqm.function.AbstractSqmFunctionDescriptor
generateAggregateSqmExpression, generateOrderedSetAggregateSqmExpression, generateSqmExpression, generateWindowSqmExpression, getArgumentsValidator, getArgumentTypeResolver, getReturnSignature, getReturnTypeResolver, getSignature
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.hibernate.query.sqm.function.SqmFunctionDescriptor
generateSqmExpression, generateSqmExpression
-
-
-
-
Constructor Detail
-
NamedSqmFunctionDescriptor
public NamedSqmFunctionDescriptor(String functionName, boolean useParenthesesWhenNoArgs, ArgumentsValidator argumentsValidator, FunctionReturnTypeResolver returnTypeResolver)
-
NamedSqmFunctionDescriptor
public NamedSqmFunctionDescriptor(String functionName, boolean useParenthesesWhenNoArgs, ArgumentsValidator argumentsValidator, FunctionReturnTypeResolver returnTypeResolver, FunctionArgumentTypeResolver argumentTypeResolver)
-
NamedSqmFunctionDescriptor
public NamedSqmFunctionDescriptor(String functionName, boolean useParenthesesWhenNoArgs, ArgumentsValidator argumentsValidator, FunctionReturnTypeResolver returnTypeResolver, FunctionArgumentTypeResolver argumentTypeResolver, String name, FunctionKind functionKind, String argumentListSignature, SqlAstNodeRenderingMode argumentRenderingMode)
-
-
Method Detail
-
getName
public String getName()
Function name accessor- Overrides:
getNamein classAbstractSqmFunctionDescriptor- Returns:
- The function name.
-
getArgumentListSignature
public String getArgumentListSignature()
- Overrides:
getArgumentListSignaturein classAbstractSqmFunctionDescriptor
-
alwaysIncludesParentheses
public boolean alwaysIncludesParentheses()
Description copied from interface:SqmFunctionDescriptorWill a call to the described function always include parentheses?SqmFunctionTemplate is generally used for rendering of a function. However there are cases where Hibernate needs to consume a fragment and decide if a token represents a function name. In cases where the token is followed by an open-paren we can safely assume the token is a function name. However, if the next token is not an open-paren, the token can still represent a function provided that the function has a "no paren" form in the case of no arguments. E.g. Many databases do not require parentheses on functions like `current_timestamp`, etc. This method helps account for those cases.
Note that the most common case, by far, is that a function will always include the parentheses - therefore this return is defined as true by default. see Template#isFunction
-
render
public void render(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, SqlAstTranslator<?> translator)
-
render
public void render(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, Predicate filter, SqlAstTranslator<?> translator)
-
render
public void render(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, Predicate filter, List<SortSpecification> withinGroup, SqlAstTranslator<?> translator)
-
render
public void render(SqlAppender sqlAppender, List<? extends SqlAstNode> sqlAstArguments, Predicate filter, Boolean respectNulls, Boolean fromFirst, SqlAstTranslator<?> walker)
-
-