[JIRA] Commented: (CAY-919) EJBQL Query with relational queries (<, <=, >, >=) are throwing exceptions

From: Garry Watkins (JIRA) ("Garry)
Date: Thu Nov 15 2007 - 18:23:44 EST

  • Next message: Andrus Adamchik (JIRA): "[JIRA] Created: (CAY-921) Remove DerviedDbEntity support from Cayenne"

        [ https://issues.apache.org/cayenne/browse/CAY-919?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12603 ]

    Garry Watkins commented on CAY-919:
    -----------------------------------

    >> Hmm... per EJBQL spec you can't alias aggregate column. That's where Object[] comes in - you can process the results by position instead of by label.

    I don't know the EJBQL spec, so I was just applying standard SQL logic, and was assuming that it would be in there. So it looks like the EJBQL spec is kind of a step backward in the fact that it doesn't support aliases. Because if I decide to change how things are grouped (added or removed) I would have to change all of my indexes. However, it looks like Hibernate does support aliases. Please look towards the end of section 7.4 of this link: http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/queryhql.html I am not saying that Cayenne should do everything that Hibernate does. However, I believe that if we allowed aliases, then we could pop the data back into DataRows. If left unaliased then we could just return the values in an Object[].

    Just my 2 cents, perhaps I can pose this question in the users mailing list.

    Thanks
    Garry

    > EJBQL Query with relational queries (<, <=, >, >=) are throwing exceptions
    > --------------------------------------------------------------------------
    >
    > Key: CAY-919
    > URL: https://issues.apache.org/cayenne/browse/CAY-919
    > Project: Cayenne
    > Issue Type: Bug
    > Components: Cayenne Core Library
    > Affects Versions: 3.0
    > Environment: Mac OS/X (Leopard), Java 1.5 Cayenne 3.M2
    > Reporter: Garry Watkins
    > Assignee: Andrus Adamchik
    >
    > When using a relational operator in an EJBQLQuery it is throwing a ParseException. Additionally shouldn't this return a data row instead a list of an Object[] array? That is assuming that one can alias the selected attributes. However, it appears that you cannot specify an alias.
    > Source:
    > EJBQLQuery q = new EJBQLQuery("SELECT at.isUsage, sum(at.amount), sum(at.hours) FROM AccrualTransaction at WHERE at.accrualCode = :accrualCode and at.employeeID = :employeeID and effectiveDate >= :payrollDate GROUP BY at.isUsage");
    > q.setParameter("accrualCode", bal.getCode());
    > q.setParameter("employeeID", emp.getEmployeeID());
    > q.setParameter("effectiveDate", balanceDate);
    > List results = emp.getObjectContext().performQuery(q); <<== throws exception here
    > System.out.println(results);
    > Error follows:
    > org.apache.cayenne.ejbql.parser.ParseException: Encountered "effectiveDate >=" at line 1, column 149.
    > Was expecting one of:
    > "(" ...
    > "NOT" ...
    > "EXISTS" ...
    > "+" ...
    > "-" ...
    > <DECIMAL_LITERAL> ...
    > <INTEGER_LITERAL> ...
    > ":" ...
    > "?" ...
    > <IDENTIFIER> ...
    > <IDENTIFIER> "." ...
    > "LENGTH" ...
    > "LOCATE" ...
    > "ABS" ...
    > "SQRT" ...
    > "MOD" ...
    > "SIZE" ...
    > "AVG" ...
    > "MAX" ...
    > "MIN" ...
    > "SUM" ...
    > "COUNT" ...
    > "SELECT" ...
    > <STRING_LITERAL> ...
    > "CONCAT" ...
    > "SUBSTRING" ...
    > "TRIM" ...
    > "LOWER" ...
    > "UPPER" ...
    > <BOOLEAN_LITERAL> ...
    > "CURRENT_DATE" ...
    > "CURRENT_TIME" ...
    > "CURRENT_TIMESTAMP" ...
    > "NEW" ...
    > "ALL" ...
    > "ANY" ...
    > "SOME" ...
    > "EMPTY" ...
    > "ASC" ...
    > "DESC" ...
    > "ORDER" ...
    > "IS" ...
    > "MEMBER" ...
    > "OF" ...
    > "LIKE" ...
    > "ESCAPE" ...
    > "BETWEEN" ...
    > "NULL" ...
    > "OR" ...
    > "AND" ...
    > "LEADING" ...
    > "TRAILING" ...
    > "BOTH" ...
    > "DISTINCT" ...
    > "FROM" ...
    > "UPDATE" ...
    > "DELETE" ...
    > "WHERE" ...
    > "GROUP" ...
    > "BY" ...
    > "HAVING" ...
    > "AS" ...
    > "LEFT" ...
    > "OUTER" ...
    > "INNER" ...
    > "JOIN" ...
    > "FETCH" ...
    > "IN" ...
    > "SET" ...
    > "OBJECT" ...
    > <IDENTIFIER> "=" ...
    > <IDENTIFIER> "<>" ...
    > <IDENTIFIER> "NOT" ...
    > <IDENTIFIER> "MEMBER" ...
    >

    -- 
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
    



    This archive was generated by hypermail 2.0.0 : Thu Nov 15 2007 - 18:24:27 EST