All Implemented Interfaces:
Expression
Direct Known Subclasses:
AvgFunction, CountFunction, MaxFunction, MinFunction, SumFunction

public abstract class AggregateFunction extends AbstractSingleEncapsulatedExpression
In the SELECT clause the result of a query may be the result of an aggregate function applied to a path expression. The following aggregate functions can be used in the SELECT clause of a query: AVG, COUNT, MAX, MIN, SUM.

A single_valued_association_field is designated by the name of an association-field in a one-to-one or many-to-one relationship. The type of a single_valued_association_field and thus a single_valued_association_path_expression is the abstract schema type of the related entity.

The argument to an aggregate function may be preceded by the keyword DISTINCT to specify that duplicate values are to be eliminated before the aggregate function is applied. Null values are eliminated before the aggregate function is applied, regardless of whether the keyword DISTINCT is specified.

BNF: aggregate_expression ::= { AVG | MAX | MIN | SUM } ([DISTINCT] state_field_path_expression) | COUNT ([DISTINCT] identification_variable | state_field_path_expression | single_valued_object_path_expression)
Since:
2.3
Version:
2.5
See Also:
  • Constructor Details

    • AggregateFunction

      protected AggregateFunction(AbstractExpression parent, String identifier)
      Creates a new AggregateFunction.
      Parameters:
      parent - The parent of this expression
      identifier - The JPQL identifier that starts this expression
  • Method Details

    • addOrderedEncapsulatedExpressionTo

      protected void addOrderedEncapsulatedExpressionTo(List<Expression> children)
      Description copied from class: AbstractEncapsulatedExpression
      Adds the Expressions representing the encapsulated Expression.
      Overrides:
      addOrderedEncapsulatedExpressionTo in class AbstractSingleEncapsulatedExpression
      Parameters:
      children - The list used to store the string representation of the encapsulated Expression
    • buildEncapsulatedExpression

      protected AbstractExpression buildEncapsulatedExpression(WordParser wordParser, String word)
      Creates the AbstractExpression to represent the given word.
      Parameters:
      word - The word that was parsed
      Returns:
      The encapsulated AbstractExpression
    • getEncapsulatedExpressionQueryBNFId

      public String getEncapsulatedExpressionQueryBNFId()
      Description copied from class: AbstractSingleEncapsulatedExpression
      Returns the BNF used to parse the encapsulated expression.
      Specified by:
      getEncapsulatedExpressionQueryBNFId in class AbstractSingleEncapsulatedExpression
      Returns:
      The BNF used to parse the encapsulated expression
    • getActualDistinctIdentifier

      public String getActualDistinctIdentifier()
      Returns the actual DISTINCT identifier found in the string representation of the JPQL query, which has the actual case that was used.
      Returns:
      The DISTINCT identifier that was actually parsed, or an empty string if it was not parsed
    • getQueryBNF

      public JPQLQueryBNF getQueryBNF()
      Description copied from interface: Expression
      Returns the BNF of this Expression.
      Returns:
      The JPQLQueryBNF, which represents the grammar of this Expression
    • hasDistinct

      public final boolean hasDistinct()
      Determines whether the DISTINCT identifier was specified in the query.
      Returns:
      true if the query has DISTINCT; false otherwise
    • hasSpaceAfterDistinct

      public final boolean hasSpaceAfterDistinct()
      Determines whether a whitespace was parsed after DISTINCT.
      Returns:
      true if there was a whitespace after DISTINCT; false otherwise
    • parseEncapsulatedExpression

      protected final void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)
      Description copied from class: AbstractEncapsulatedExpression
      Parses the encapsulated expression by starting at the current position, which is part of the given WordParser.
      Overrides:
      parseEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Parameters:
      wordParser - The text to parse based on the current position of the cursor
      whitespaceCount - The number of whitespace characters that were parsed after '('
      tolerant - Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
    • toParsedTextEncapsulatedExpression

      protected void toParsedTextEncapsulatedExpression(StringBuilder writer, boolean actual)
      Description copied from class: AbstractEncapsulatedExpression
      Generates a string representation of the encapsulated Expression.
      Overrides:
      toParsedTextEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Parameters:
      writer - The buffer used to append the encapsulated Expression's string representation
      actual - Determines whether to include any characters that are considered virtual, i.e. that was parsed when the query is incomplete and is needed for functionality like content assist