You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Pawel Veselov (JIRA)" <ji...@apache.org> on 2018/12/31 04:43:00 UTC

[jira] [Closed] (OPENJPA-2763) Certain AND/NOT combination fail to parse

     [ https://issues.apache.org/jira/browse/OPENJPA-2763?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pawel Veselov closed OPENJPA-2763.
----------------------------------
    Resolution: Not A Problem

Jumped the gun on this. Haven't been using JPQL for a while, in favor of criteria API :) Apparently, boolean fields can not be used as boolean expressions, still need a comparison operator.


> Certain AND/NOT combination fail to parse
> -----------------------------------------
>
>                 Key: OPENJPA-2763
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2763
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.4.2
>            Reporter: Pawel Veselov
>            Priority: Major
>
> I don't have enough details for a minimized use case, I'll update this as I investigate.
> The following query fails to parse, {{campaign}} is a reference field, and {{enabled}} is a boolean field.
> {code}
> update E_CampaignDevice cd set cd.enabled = true where  ( cd.campaign = :campaign ) AND (  NOT ( cd.enabled )  )
> {code}
> I don't see anything wrong with the query. The error is:
> {noformat}
> Caused by: <openjpa-2.4.2-xl4.2-rUnversioned directory nonfatal user error> org.apache.openjpa.persistence.ArgumentException: Encountered "NOT" at character 92, but expected: ["("].
>         at org.apache.openjpa.kernel.jpql.JPQL.generateParseException(JPQL.java:13188)
>         at org.apache.openjpa.kernel.jpql.JPQL.jj_consume_token(JPQL.java:13064)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_primary(JPQL.java:1980)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_factor(JPQL.java:1958)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_term(JPQL.java:1807)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_expression(JPQL.java:1769)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_primary(JPQL.java:1975)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_factor(JPQL.java:1958)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_term(JPQL.java:1807)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_term(JPQL.java:1820)
>         at org.apache.openjpa.kernel.jpql.JPQL.conditional_expression(JPQL.java:1769)
>         at org.apache.openjpa.kernel.jpql.JPQL.where_clause(JPQL.java:1587)
>         at org.apache.openjpa.kernel.jpql.JPQL.update_statement(JPQL.java:151)
>         at org.apache.openjpa.kernel.jpql.JPQL.parseQuery(JPQL.java:66)
>         at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.parse(JPQLExpressionBuilder.java:2428)
>         at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.<init>(JPQLExpressionBuilder.java:2415)
>         at org.apache.openjpa.kernel.jpql.JPQLParser.parse(JPQLParser.java:48)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)