Re: ParseException with EJBQL expression

From: Dave Lamy (davelam..mail.com)
Date: Mon Dec 21 2009 - 10:59:05 EST

  • Next message: Emanuele Maiarelli: "out of memory using ResultIterator"

    Thanks Andrey-- good to know. Might be worth a minor JIRA to fix the
    Expression.toEJBQL() to correctly produce this notation instead of
    likeIgnoreCase.

    Dave

    On Thu, Dec 17, 2009 at 6:16 AM, Andrey Razumovsky <
    razumovsky.andre..mail.com> wrote:

    > anwsering my own question : "upper" can be used, but the keyword *must* be
    > in lower case
    >
    > 2009/12/17 Andrey Razumovsky <razumovsky.andre..mail.com>
    >
    > > So likeIgnoreCase in not supported at all? Is there some workaround?
    > >
    > > 2009/12/4 Andrus Adamchik <andru..bjectstyle.org>
    > >
    > > "likeIgnoreCase" is not valid in EJBQL. Although the error message refers
    > >> to something else... strange...
    > >>
    > >>
    > >>
    > >> 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
    > >>>
    > >>
    > >>
    > >
    > >
    > > --
    > > Andrey
    > >
    >
    >
    >
    > --
    > Andrey
    >



    This archive was generated by hypermail 2.0.0 : Mon Dec 21 2009 - 11:00:09 EST