Hey guys--
I'm really just now getting into using the EJBQLQuery and am having some
difficulties. I don't know whether I'm doing something fundamentally wrong
or what.
Here's my EJBQL expression that I'm trying to get parsed (running 3.0B1):
select COUNT(foo) from ProductCollection foo where
foo.productStyles.taxonomy likeIgnoreCase '323.%'
Parsing this query yields the following exception:
org.apache.cayenne.ejbql.parser.ParseException: Encountered " <IDENTIFIER>
"foo "" at line 1, column 53.
Was expecting:
"(" ...
at
org.apache.cayenne.ejbql.parser.EJBQL.generateParseException(EJBQL.java:9419)
at
org.apache.cayenne.ejbql.parser.EJBQL.jj_consume_token(EJBQL.java:9298)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_primary(EJBQL.java:1933)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_factor(EJBQL.java:1911)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_term(EJBQL.java:1776)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_expression(EJBQL.java:1738)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_primary(EJBQL.java:1928)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_factor(EJBQL.java:1911)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_term(EJBQL.java:1776)
at
org.apache.cayenne.ejbql.parser.EJBQL.conditional_expression(EJBQL.java:1738)
at org.apache.cayenne.ejbql.parser.EJBQL.where_clause(EJBQL.java:1585)
at org.apache.cayenne.ejbql.parser.EJBQL.select_statement(EJBQL.java:69)
at org.apache.cayenne.ejbql.parser.EJBQL.parseQuery(EJBQL.java:41)
...
The statement looks legit to me. Is there like a fundamental something I'm
not understanding about EJBQL? I saw some docs that showed doing this sort
of join alias "IN" thing,
SELECT OBJECT(e) FROM Department d, IN(d.employees) e
WHERE d.name = ?1 AND e.salary > ?2
My problem is that I'm using Expression.toEJBQL() to gen the where clause..
was hoping to not have to recreate my code that generates the Expression
object.
Help!
Dave