Re: ParseException with EJBQL expression

From: Andrey Razumovsky (razumovsky.andre..mail.com)
Date: Thu Dec 17 2009 - 07:16:27 EST

  • Next message: Hans Pikkemaat: "Retrieving Records for a range of primary keys"

    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 : Thu Dec 17 2009 - 07:18:55 EST