Umm sorry, "foo" is the alias..
On Dec 4, 2009, at 3:26 PM, Andrus Adamchik wrote:
Right now our parser requires aliases for entities:
select COUNT(a) from ProductCollection foo as a where
a.productStyles.taxonomy likeIgnoreCase '323.%'
On Dec 4, 2009, at 4:12 AM, Dave Lamy wrote:
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