Parser for handling JPQL Single-String queries. Takes a JPQLQuery and the query string and parses it into its constituent parts, updating the JPQLQuery accordingly with the result that after calling the parse() method the JPQLQuery is populated.
SELECT [ {result} ] [FROM {candidate-classes} ] [WHERE {filter}] [GROUP BY {grouping-clause} ] [HAVING {having-clause} ] [ORDER BY {ordering-clause}] e.g SELECT c FROM Customer c INNER JOIN c.orders o WHERE c.status = 1
or
UPDATE {update-clause} WHERE {filter} and update-clause is of the form "Entity [[AS] identifier] SET {field = new_value}, ..."
or
DELETE {delete-clause} WHERE {filter} and delete-clause is of the form "FROM Entity [[AS] identifier]"
Note that {filter} and {having-clause} can contain subqueries, hence containing keywords
SELECT c FROM Customer c WHERE NOT EXISTS (SELECT o1 FROM c.orders o1)
So the "filter" for the outer query is "NOT EXISTS (SELECT o1 FROM c.orders o1)"
@version $Revision: 1.5 $