public interface Expression
The BNF for the Java Persistence query language, version 2.0:
QL_statement ::= select_statement | update_statement | delete_statement
select_statement ::= select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause]
update_statement ::= update_clause [where_clause]
delete_statement ::= delete_clause [where_clause]
from_clause ::= FROM identification_variable_declaration {, {identification_variable_declaration | collection_member_declaration}}*
identification_variable_declaration ::= range_variable_declaration { join | fetch_join }*
range_variable_declaration ::= entity_name [AS] identification_variable
join ::= join_spec join_association_path_expression [AS] identification_variable
fetch_join ::= join_spec FETCH join_association_path_expression
join_spec ::= [ LEFT [OUTER] | INNER ] JOIN
join_association_path_expression ::= join_collection_valued_path_expression |
join_single_valued_path_expression
join_collection_valued_path_expression ::= identification_variable.{single_valued_embeddable_object_field.}*collection_valued_field
join_single_valued_path_expression ::= identification_variable.{single_valued_embeddable_object_field.}*single_valued_object_field
collection_member_declaration ::= IN (collection_valued_path_expression) [AS] identification_variable
qualified_identification_variable ::= KEY(identification_variable) |
VALUE(identification_variable) |
ENTRY(identification_variable)
single_valued_path_expression ::= qualified_identification_variable |
state_field_path_expression |
single_valued_object_path_expression
general_identification_variable ::= identification_variable |
KEY(identification_variable) |
VALUE(identification_variable)
state_field_path_expression ::= general_identification_variable.{single_valued_object_field.}*state_field
single_valued_object_path_expression ::= general_identification_variable.{single_valued_object_field.}*single_valued_object_field
collection_valued_path_expression ::= general_identification_variable.{single_valued_object_field.}*collection_valued_field
update_clause ::= UPDATE entity_name [[AS] identification_variable] SET update_item {, update_item}*
update_item ::= [identification_variable.]{state_field | single_valued_object_field} = new_value
new_value ::= scalar_expression | simple_entity_expression | NULL
delete_clause ::= DELETE FROM entity_name [[AS] identification_variable]
select_clause ::= SELECT [DISTINCT] select_item {, select_item}*
select_item ::= select_expression [[AS] result_variable]
select_expression ::= single_valued_path_expression |
scalar_expression |
aggregate_expression |
identification_variable |
OBJECT(identification_variable) |
constructor_expression
constructor_expression ::= NEW constructor_name ( constructor_item {, constructor_item}* )
constructor_item ::= single_valued_path_expression |
scalar_expression |
aggregate_expression |
identification_variable
aggregate_expression ::= { AVG | MAX | MIN | SUM } ([DISTINCT] state_field_path_expression) |
COUNT ([DISTINCT] identification_variable |
state_field_path_expression |
single_valued_object_path_expression)
where_clause ::= WHERE conditional_expression
groupby_clause ::= GROUP BY groupby_item {, groupby_item}*
groupby_item ::= single_valued_path_expression | identification_variable
having_clause ::= HAVING conditional_expression
orderby_clause ::= ORDER BY orderby_item {, orderby_item}*
orderby_item ::= state_field_path_expression | result_variable [ ASC | DESC ]
subquery ::= simple_select_clause subquery_from_clause [where_clause] [groupby_clause] [having_clause]
subquery_from_clause ::= FROM subselect_identification_variable_declaration {, subselect_identification_variable_declaration | collection_member_declaration}*
subselect_identification_variable_declaration ::= identification_variable_declaration |
derived_path_expression [AS] identification_variable {join}* |
derived_collection_member_declaration
derived_path_expression ::= superquery_identification_variable.{single_valued_object_field.}*collection_valued_field |
superquery_identification_variable.{single_valued_object_field.}*single_valued_object_field
derived_collection_member_declaration ::= IN superquery_identification_variable.{single_valued_object_field.}*collection_valued_field
simple_select_clause ::= SELECT [DISTINCT] simple_select_expression
simple_select_expression ::= single_valued_path_expression |
scalar_expression |
aggregate_expression |
identification_variable
scalar_expression ::= simple_arithmetic_expression |
string_primary |
enum_primary |
datetime_primary |
boolean_primary |
case_expression |
entity_type_expression
conditional_expression ::= conditional_term | conditional_expression OR conditional_term
conditional_term ::= conditional_factor | conditional_term AND conditional_factor
conditional_factor ::= [ NOT ] conditional_primary
conditional_primary ::= simple_cond_expression | (conditional_expression)
simple_cond_expression ::= comparison_expression |
between_expression |
in_expression |
like_expression |
null_comparison_expression |
empty_collection_comparison_expression |
collection_member_expression |
exists_expression
between_expression ::= arithmetic_expression [NOT] BETWEEN arithmetic_expression AND arithmetic_expression |
string_expression [NOT] BETWEEN string_expression AND string_expression |
datetime_expression [NOT] BETWEEN datetime_expression AND datetime_expression
in_expression ::= {state_field_path_expression | type_discriminator} [NOT] IN { ( in_item {, in_item}* ) | (subquery) | collection_valued_input_parameter }
in_item ::= literal | single_valued_input_parameter
like_expression ::= string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
null_comparison_expression ::= {single_valued_path_expression | input_parameter} IS [NOT] NULL
empty_collection_comparison_expression ::= collection_valued_path_expression IS [NOT] EMPTY
collection_member_expression ::= entity_or_value_expression [NOT] MEMBER [OF] collection_valued_path_expression
entity_or_value_expression ::= single_valued_object_path_expression |
state_field_path_expression |
simple_entity_or_value_expression
simple_entity_or_value_expression ::= identification_variable |
input_parameter |
literal
exists_expression ::= [NOT] EXISTS (subquery)
all_or_any_expression ::= { ALL | ANY | SOME} (subquery)
comparison_expression ::= string_expression comparison_operator {string_expression | all_or_any_expression} |
boolean_expression { = | <> } {boolean_expression | all_or_any_expression} |
enum_expression { =|<> } {enum_expression | all_or_any_expression} |
datetime_expression comparison_operator {datetime_expression | all_or_any_expression} |
entity_expression { = | <> } {entity_expression | all_or_any_expression} |
arithmetic_expression comparison_operator {arithmetic_expression | all_or_any_expression} |
entity_type_expression { = | <> } entity_type_expression}
comparison_operator ::= = | > | >= | < | <= | <>
arithmetic_expression ::= simple_arithmetic_expression | (subquery)
simple_arithmetic_expression ::= arithmetic_term | simple_arithmetic_expression { + | - } arithmetic_term
arithmetic_term ::= arithmetic_factor | arithmetic_term { * | / } arithmetic_factor
arithmetic_factor ::= [{ + | - }] arithmetic_primary
arithmetic_primary ::= state_field_path_expression |
numeric_literal |
(simple_arithmetic_expression) |
input_parameter |
functions_returning_numerics |
aggregate_expression |
case_expression
string_expression ::= string_primary | (subquery)
string_primary ::= state_field_path_expression |
string_literal |
input_parameter |
functions_returning_strings |
aggregate_expression |
case_expression
datetime_primary ::= state_field_path_expression |
input_parameter |
functions_returning_datetime |
aggregate_expression |
case_expression |
date_time_timestamp_literal
datetime_expression ::= datetime_primary | (subquery)
boolean_expression ::= boolean_primary | (subquery)
boolean_primary ::= state_field_path_expression |
boolean_literal |
input_parameter |
case_expression
enum_expression ::= enum_primary | (subquery)
enum_primary ::= state_field_path_expression |
enum_literal |
input_parameter |
case_expression
entity_expression ::= single_valued_object_path_expression | simple_entity_expression
simple_entity_expression ::= identification_variable |
input_parameter
entity_type_expression ::= type_discriminator |
entity_type_literal |
input_parameter
type_discriminator ::= TYPE(identification_variable | single_valued_object_path_expression | input_parameter)
functions_returning_numerics ::= LENGTH(string_primary) |
LOCATE(string_primary, string_primary[, simple_arithmetic_expression]) |
ABS(simple_arithmetic_expression) |
SQRT(simple_arithmetic_expression) |
MOD(simple_arithmetic_expression, simple_arithmetic_expression) |
SIZE(collection_valued_path_expression) |
INDEX(identification_variable)
functions_returning_datetime ::= CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | literalTemporal
functions_returning_strings ::= CONCAT(string_primary, string_primary {, string_primary}*) |
SUBSTRING(string_primary, simple_arithmetic_expression [, simple_arithmetic_expression]) |
TRIM([[trim_specification] [trim_character] FROM] string_primary) |
LOWER(string_primary) |
UPPER(string_primary)
trim_specification ::= LEADING | TRAILING | BOTH
trim_character ::= string_literal | input_parameter
case_expression ::= general_case_expression |
simple_case_expression |
coalesce_expression |
nullif_expression
general_case_expression ::= CASE when_clause {when_clause}* ELSE scalar_expression END
when_clause ::= WHEN conditional_expression THEN scalar_expression
simple_case_expression ::= CASE case_operand simple_when_clause {simple_when_clause}* ELSE scalar_expression END
case_operand ::= state_field_path_expression | type_discriminator
simple_when_clause ::= WHEN scalar_expression THEN scalar_expression
coalesce_expression ::= COALESCE(scalar_expression {, scalar_expression}+)
nullif_expression ::= NULLIF(scalar_expression, scalar_expression)
boolean_literal ::= TRUE | FALSE
string_literal ::= 'string'
enum_literal ::= {package_name.}*EnumType.CONSTANT
literalTemporal ::= date_literal | TIME_LITERAL | TIMESTAMP_LITERAL
date_literal ::= "{" "'d'" (' ' | '\t')+ '\'' DATE_STRING '\'' (' ' | '\t')* "}"
TIME_LITERAL ::= "{" "'t'" (' ' | '\t')+ '\'' TIME_STRING '\'' (' ' | '\t')* "}"
TIMESTAMP_LITERAL ::= "{" ('ts') (' ' | '\t')+ '\'' DATE_STRING ' ' TIME_STRING '\'' (' ' | '\t')* "}"
DATE_STRING ::= '0'..'9' '0'..'9' '0'..'9' '0'..'9' '-' '0'..'9' '0'..'9' '-' '0'..'9' '0'..'9'
TIME_STRING ::= '0'..'9' ('0'..'9')? ':' '0'..'9' '0'..'9' ':' '0'..'9' '0'..'9' '.' '0'..'9'*
The following BNFs is the EclipseLink's extension over the standard JPQL BNF.
join ::= join_spec { join_association_path_expression | join_treat_association_path_expression } [AS] identification_variable
join_treat_association_path_expression ::= TREAT(join_association_path_expression AS entity_type_literal)
functions_returning_strings ::= ... | func_expression
functions_returning_numerics ::= ... | func_expression
functions_returning_datetime ::= ... | func_expression
func_expression ::= FUNC (func_name {, func_item}*)
func_item ::= scalar_expression (NOT SURE)
orderby_item ::= state_field_path_expression | result_variable | scalar_expression [ ASC | DESC ]
groupby_item ::= single_valued_path_expression | identification_variable | scalar_expression
aggregate_expression ::= { AVG | MAX | MIN | SUM | COUNT } ([DISTINCT] scalar_expression)
in_item ::= literal | single_valued_input_parameter | scalar_expression
Modifier and Type | Field and Description |
---|---|
static String |
ABS
The constant for 'ABS'.
|
static String |
ALL
The constant for 'ALL'.
|
static String |
AND
The constant for 'AND'.
|
static String |
ANY
The constant for 'ANY'.
|
static String |
AS
The constant for 'AS'.
|
static String |
ASC
The constant for 'ASC'.
|
static String |
AVG
The constant for 'AVG'.
|
static String |
BETWEEN
The constant for 'BETWEEN'.
|
static String |
BIT_LENGTH
The constant for 'BIT_LENGTH', which is an unused keyword.
|
static String |
BOTH
The constant for 'BOTH'.
|
static String |
CASE
The constant for the identifier 'CASE'.
|
static String |
CHAR_LENGTH
The constant for 'CHAR_LENGTH', which is an unused keyword.
|
static String |
CHARACTER_LENGTH
The constant for 'CHARACTER_LENGTH', which is an unused keyword.
|
static String |
CLASS
The constant for 'CLASS', which is an unused keyword.
|
static String |
COALESCE
The constant for 'COALESCE'.
|
static String |
CONCAT
The constant for 'CONCAT'.
|
static String |
COUNT
The constant for 'COUNT'.
|
static String |
CURRENT_DATE
The constant for 'CURRENT_DATE'.
|
static String |
CURRENT_TIME
The constant for 'CURRENT_DATE'.
|
static String |
CURRENT_TIMESTAMP
The constant for 'CURRENT_TIMESTAMP'.
|
static String |
DELETE
The constant for 'DELETE'.
|
static String |
DELETE_FROM
The constant for 'DELETE FROM'.
|
static String |
DESC
The constant for 'DESC'.
|
static String |
DIFFERENT
The constant for '<>'.
|
static String |
DISTINCT
The constant for 'DISTINCT'.
|
static String |
DIVISION
The constant for the division sign '/'.
|
static String |
ELSE
The constant for the identifier 'ELSE'.
|
static String |
EMPTY
The constant for 'EMPTY'.
|
static String |
END
The constant for the identifier 'END'.
|
static String |
ENTRY
The constant for 'ENTRY'.
|
static String |
EQUAL
The constant for '='.
|
static String |
ESCAPE
The constant for 'ESCAPE'.
|
static String |
EXISTS
The constant for 'EXISTS'.
|
static String |
FALSE
The constant for 'FALSE'.
|
static String |
FETCH
A constant for 'FETCH'.
|
static String |
FROM
The constant for 'FROM'.
|
static String |
FUNC
The constant 'FUNC'.
|
static String |
GREATER_THAN
The constant for '>'.
|
static String |
GREATER_THAN_OR_EQUAL
The constant for '>='.
|
static String |
GROUP_BY
The constant for 'GROUP BY'.
|
static String |
HAVING
The constant for 'HAVING'.
|
static String |
IN
The constant for 'IN'.
|
static String |
INDEX
The constant for 'INDEX'.
|
static String |
INNER
The constant for 'INNER'.
|
static String |
INNER_JOIN
The constant for 'INNER JOIN'.
|
static String |
INNER_JOIN_FETCH
The constant for 'INNER JOIN FETCH'.
|
static String |
IS
The constant for 'IS'.
|
static String |
IS_EMPTY
The constant for 'IS EMPTY'.
|
static String |
IS_NOT_EMPTY
The constant for 'IS NOT EMPTY'.
|
static String |
IS_NOT_NULL
The constant for 'IS NOT NULL'.
|
static String |
IS_NULL
The constant for 'IS NULL'.
|
static String |
JOIN
The constant for 'JOIN'.
|
static String |
JOIN_FETCH
The constant for 'JOIN FETCH'.
|
static String |
KEY
The constant for 'KEY'.
|
static String |
LEADING
The constant for 'LEADING'.
|
static String |
LEFT
The constant for 'LEFT'.
|
static String |
LEFT_JOIN
The constant for 'LEFT JOIN'.
|
static String |
LEFT_JOIN_FETCH
The constant for 'LEFT JOIN FETCH'.
|
static String |
LEFT_OUTER_JOIN
The constant for 'LEFT OUTER JOIN'.
|
static String |
LEFT_OUTER_JOIN_FETCH
The constant for 'LEFT OUTER JOIN FETCH'.
|
static String |
LENGTH
The constant for 'LENGTH'.
|
static String |
LIKE
The constant for 'LIKE'.
|
static String |
LOCATE
The constant for 'LOCATE'.
|
static String |
LOWER
The constant for 'LOWER'.
|
static String |
LOWER_THAN
The constant for '<'.
|
static String |
LOWER_THAN_OR_EQUAL
The constant for '<='.
|
static String |
MAX
The constant for 'MAX'.
|
static String |
MEMBER
The constant for 'MEMBER'.
|
static String |
MEMBER_OF
The constant for 'MEMBER OF'.
|
static String |
MIN
The constant for 'MIN'.
|
static String |
MINUS
The constant for the minus sign '-'.
|
static String |
MOD
The constant for 'MOD'.
|
static String |
MULTIPLICATION
The constant for multiplication sign '*'.
|
static String |
NAMED_PARAMETER
The constant for ':'.
|
static String |
NEW
The constant for 'NEW'.
|
static String |
NOT
The constant for 'NOT'.
|
static String |
NOT_BETWEEN
The constant for 'NOT BETWEEN'.
|
static String |
NOT_EXISTS
The constant for 'NOT EXISTS'.
|
static String |
NOT_IN
The constant for 'NOT IN'.
|
static String |
NOT_LIKE
The constant for 'NOT LIKE'.
|
static String |
NOT_MEMBER
The constant for 'NOT MEMBER'.
|
static String |
NOT_MEMBER_OF
The constant for 'NOT MEMBER OF'.
|
static String |
NULL
The constant for 'NULL'.
|
static String |
NULLIF
The constant for 'NULLIF'.
|
static String |
OBJECT
The constant for 'OBJECT'.
|
static String |
OF
The constant for 'OF'.
|
static String |
OR
The constant for 'OR'.
|
static String |
ORDER_BY
The constant for 'ORDER BY'.
|
static String |
OUTER
The constant for 'OUTER'.
|
static String |
PLUS
The constant for for the plus sign '+'.
|
static String |
POSITION
The constant for 'POSITION', which is an unused keyword.
|
static String |
POSITIONAL_PARAMETER
The constant for '?'.
|
static String |
QUOTE
The constant for single quote.
|
static String |
SELECT
The constant for 'SELECT'.
|
static String |
SET
The constant for 'SET'.
|
static String |
SIZE
The constant for 'SIZE'.
|
static String |
SOME
The constant for 'SOME'.
|
static String |
SQRT
The constant for 'SQRT'.
|
static String |
SUBSTRING
The constant for 'SUBSTRING'.
|
static String |
SUM
The constant for 'SUM'.
|
static String |
THEN
The constant for 'THEN'.
|
static String |
TRAILING
The constant for 'TRAILING'.
|
static String |
TREAT
The constant for 'TREAT'.
|
static String |
TRIM
The constant for 'TRIM'.
|
static String |
TRUE
The constant for 'TRUE'.
|
static String |
TYPE
The constant for 'TYPE'.
|
static String |
UNKNOWN
The constant for 'UNKNOWN', which is an unused keyword.
|
static String |
UPDATE
The constant for 'UPDATE'.
|
static String |
UPPER
The constant for 'UPPER'.
|
static String |
VALUE
The constant for 'VALUE'.
|
static String |
WHEN
The constant for the identifier 'WHEN'.
|
static String |
WHERE
The constant for 'WHERE'.
|
Modifier and Type | Method and Description |
---|---|
void |
accept(ExpressionVisitor visitor)
Visits this
Expression by the given visitor . |
void |
acceptChildren(ExpressionVisitor visitor)
Visits the children of this
Expression . |
ListIterator<Expression> |
children()
Returns the children of this
Expression . |
Expression[] |
getChildren()
Returns the children of this
Expression . |
Expression |
getParent()
Returns the parent of this
Expression . |
JPQLExpression |
getRoot()
Retrieves the root node of the parsed tree hierarchy.
|
boolean |
isAncestor(Expression expression)
Determines whether this
Expression is a parent of the given Expression . |
String |
toActualText()
Generates a string representation of this
Expression , which needs to include any
characters that are considered virtual, i.e. |
String |
toParsedText()
Returns a string representation of this
Expression and its children. |
static final String ABS
static final String ALL
static final String AND
static final String ANY
static final String AS
static final String ASC
static final String AVG
static final String BETWEEN
static final String BIT_LENGTH
static final String BOTH
static final String CASE
static final String CHAR_LENGTH
static final String CHARACTER_LENGTH
static final String CLASS
static final String COALESCE
static final String CONCAT
static final String COUNT
static final String CURRENT_DATE
static final String CURRENT_TIME
static final String CURRENT_TIMESTAMP
static final String DELETE
static final String DELETE_FROM
static final String DESC
static final String DIFFERENT
static final String DISTINCT
static final String DIVISION
static final String ELSE
static final String EMPTY
static final String END
static final String ENTRY
static final String EQUAL
static final String ESCAPE
static final String EXISTS
static final String FALSE
static final String FETCH
static final String FROM
static final String FUNC
static final String GREATER_THAN
static final String GREATER_THAN_OR_EQUAL
static final String GROUP_BY
static final String HAVING
static final String IN
static final String INDEX
static final String INNER
static final String INNER_JOIN
static final String INNER_JOIN_FETCH
static final String IS
static final String IS_EMPTY
static final String IS_NOT_EMPTY
static final String IS_NOT_NULL
static final String IS_NULL
static final String JOIN
static final String JOIN_FETCH
static final String KEY
static final String LEADING
static final String LEFT
static final String LEFT_JOIN
static final String LEFT_JOIN_FETCH
static final String LEFT_OUTER_JOIN
static final String LEFT_OUTER_JOIN_FETCH
static final String LENGTH
static final String LIKE
static final String LOCATE
static final String LOWER
static final String LOWER_THAN
static final String LOWER_THAN_OR_EQUAL
static final String MAX
static final String MEMBER
static final String MEMBER_OF
static final String MIN
static final String MINUS
static final String MOD
static final String MULTIPLICATION
static final String NAMED_PARAMETER
static final String NEW
static final String NOT
static final String NOT_BETWEEN
static final String NOT_EXISTS
static final String NOT_IN
static final String NOT_LIKE
static final String NOT_MEMBER
static final String NOT_MEMBER_OF
static final String NULL
static final String NULLIF
static final String OBJECT
static final String OF
static final String OR
static final String ORDER_BY
static final String OUTER
static final String PLUS
static final String POSITION
static final String POSITIONAL_PARAMETER
static final String QUOTE
static final String SELECT
static final String SET
static final String SIZE
static final String SOME
static final String SQRT
static final String SUBSTRING
static final String SUM
static final String THEN
static final String TRAILING
static final String TREAT
static final String TRIM
static final String TRUE
static final String TYPE
static final String UNKNOWN
static final String UPDATE
static final String UPPER
static final String VALUE
static final String WHEN
static final String WHERE
void accept(ExpressionVisitor visitor)
Expression
by the given visitor
.visitor
- The visitor
to visit this objectvoid acceptChildren(ExpressionVisitor visitor)
Expression
. This method can be used to optimize traversing
the children since a new list is not created every time children()
or getChildren()
is called.
This does not traverse the Expression
sub-hierarchy, use an subclass of
AbstractTraverseChildrenVisitor
in order to traverse the entire sub-hierarchy.
visitor
- The visitor
to visit the children of this object.ListIterator<Expression> children()
Expression
.Expression
or an empty list if this Expression
does not have childrenExpression[] getChildren()
Expression
.Expression
or an empty list if this Expression
does not have childrenExpression getParent()
Expression
.null
except for the
root of the treeJPQLExpression getRoot()
Expression
treeboolean isAncestor(Expression expression)
Expression
is a parent of the given Expression
.expression
- The Expression
to verify its paternity with this Expression
true
if this Expression
is the same as the given Expression
or one of its parent; false
otherwiseString toActualText()
Expression
, which needs 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.Expression
String toParsedText()
Expression
and its children. The expression
should contain whitespace even if the beautified version would not have any. For instance,
"SELECT e " should be returned where Expression#toText()
would return "SELECT e".Expression
EclipseLink 2.3.2, "build v20111125-r10461" API Reference