openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fay Wang <fyw...@yahoo.com>
Subject Re: Bug in HAVING clause (JPQL)
Date Wed, 03 Sep 2008 16:47:50 GMT
The manual says "The HAVING clause must specify search conditions over the grouping items or
aggregate functions that apply to grouping items." Therefore, the two JPQL should be valid:

    select m.idPublisher, max(m.datePublished)
       from Magazine m
       group by m.idPublisher
       having max(m.datePublished) is null
 
     select m.idPublisher, max(m.datePublished)
       from Magazine m
       group by m.idPublisher
        having max(m.datePublished) = current_date

You might want to open a JIRA to address this problem.






--- On Wed, 9/3/08, Ognjen Blagojevic <ognjen@etf.bg.ac.yu> wrote:

> From: Ognjen Blagojevic <ognjen@etf.bg.ac.yu>
> Subject: Bug in HAVING clause (JPQL)
> To: "OpenJPA developer list" <dev@openjpa.apache.org>
> Date: Wednesday, September 3, 2008, 1:46 AM
> Hi devs,
> 
> It seems that these two (valid?) queries are throwing an
> exception:
> 
>     select m.idPublisher, max(m.datePublished)
>       from Magazine m
>   group by m.idPublisher
>     having max(m.datePublished) is null
> 
>     select m.idPublisher, max(m.datePublished)
>       from Magazine m
>   group by m.idPublisher
>     having max(m.datePublished) = current_date
> 
> The exception thrown is:
> 
> <openjpa-1.3.0-SNAPSHOT-runknown nonfatal user error>
> 
> org.apache.openjpa.persistence.ArgumentException:
> Encountered "max ( m . 
> datePublished ) is" at character 90, but expected:
> ["(", ")", "*", "+",
> 
> "-", ".", "/", ":",
> "<", "<=", "<>",
> "=", ">", ">=",
> "?", "ABS", "ALL", 
> "AND", "ANY", "AS",
> "ASC", "AVG", "BETWEEN",
> "BOTH", "BY", "CONCAT", 
> "COUNT", "CURRENT_DATE",
> "CURRENT_TIME", "CURRENT_TIMESTAMP",
> "DELETE", 
> "DESC", "DISTINCT", "EMPTY",
> "ESCAPE", "EXISTS", "FETCH",
> "FROM", 
> "GROUP", "HAVING", "IN",
> "INNER", "IS", "JOIN",
> "LEADING", "LEFT", 
> "LENGTH", "LIKE", "LOCATE",
> "LOWER", "MAX", "MEMBER",
> "MIN", "MOD", 
> "NEW", "NOT", "NULL",
> "OBJECT", "OF", "OR",
> "ORDER", "OUTER", "SELECT", 
> "SET", "SIZE", "SOME",
> "SQRT", "SUBSTRING", "SUM",
> "TRAILING", "TRIM", 
> "UPDATE", "UPPER", "WHERE",
> <BOOLEAN_LITERAL>, <DECIMAL_LITERAL>, 
> <IDENTIFIER>, <INTEGER_LITERAL>,
> <STRING_LITERAL>].
> 	at 
> org.apache.openjpa.kernel.jpql.JPQL.generateParseException(JPQL.java:9501)
> 	at
> org.apache.openjpa.kernel.jpql.JPQL.jj_consume_token(JPQL.java:9378)
> ...
> 
> For test case, one could use these classes:
> 
> /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Magazine.java
> /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Publisher.java
> 
> 
> Configuration:
> - OpenJPA 1.2.0 / OpenJPA 1.3.0 SNAPSHOT
> - Enhancing at Build Time
> - MySQL 5.0.22
> 
> Regards,
> Ognjen


      

Mime
View raw message