Class EclipseLinkJPQLGrammar2_4

java.lang.Object
org.eclipse.persistence.jpa.jpql.parser.AbstractJPQLGrammar
org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_4
All Implemented Interfaces:
JPQLGrammar

public final class EclipseLinkJPQLGrammar2_4 extends AbstractJPQLGrammar

This JPQLGrammar provides support for parsing JPQL queries defined in JSR-338 - Java Persistence 2.1 and the additional support provided by EclipseLink 2.4.

The BNFs of the additional support are the following:
 select_statement ::= select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause] {union_clause}*

 union_clause ::= { UNION | INTERSECT | EXCEPT} [ALL] subquery

 from_clause ::= FROM identification_variable_declaration {, {identification_variable_declaration |
                                                              collection_member_declaration |
                                                              (subquery) |
                                                              table_variable_declaration }}*

 range_variable_declaration ::= root_object [AS] identification_variable

 root_object ::= abstract_schema_name | fully_qualified_class_name

 table_variable_declaration ::= table_expression [AS] identification_variable

 join ::= join_spec { abstract_schema_name | join_association_path_expression } [AS] identification_variable [join_condition]

 functions_returning_datetime ::= cast_expression |
                                  extract_expression |
                                  ...

 functions_returning_string ::= cast_expression |
                                extract_expression |
                                ...

 functions_returning_numeric ::= cast_expression |
                                 extract_expression |
                                 ...

 simple_cond_expression ::= regexp_expression |
                            ...

 function_expression ::= { FUNC | FUNCTION | OPERATOR | SQL | COLUMN } (string_literal {, function_arg}*)

 regexp_expression ::= string_expression REGEXP pattern_value

 extract_expression ::= EXTRACT(date_part_literal [FROM] scalar_expression)

 table_expression ::= TABLE(string_literal)

 date_part_literal ::= { MICROSECOND | SECOND | MINUTE | HOUR | DAY | WEEK | MONTH | QUARTER |
                         YEAR | SECOND_MICROSECOND | MINUTE_MICROSECOND | MINUTE_SECOND |
                         HOUR_MICROSECOND | HOUR_SECOND | HOUR_MINUTE | DAY_MICROSECOND |
                         DAY_SECOND | DAY_MINUTE | DAY_HOUR | YEAR_MONTH, etc }

 cast_expression ::= CAST(scalar_expression [AS] database_type)

 database_type ::= data_type_literal [( [numeric_literal [, numeric_literal]] )]

 data_type_literal ::= [CHAR, VARCHAR, NUMERIC, INTEGER, DATE, TIME, TIMESTAMP, etc]

Provisional API: This interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

Version:
2.5
Author:
Pascal Filion