You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Nikita Timofeev (JIRA)" <ji...@apache.org> on 2016/12/19 15:17:58 UTC

[jira] [Assigned] (CAY-2175) AliasName used in EJBQLQuery is not working if it contains mixed case.

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

Nikita Timofeev reassigned CAY-2175:
------------------------------------

    Assignee: Nikita Timofeev

> AliasName used in EJBQLQuery is not working if it contains mixed case.
> ----------------------------------------------------------------------
>
>                 Key: CAY-2175
>                 URL: https://issues.apache.org/jira/browse/CAY-2175
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 4.0.M4
>            Reporter: Saravana Kumar M
>            Assignee: Nikita Timofeev
>              Labels: easyfix
>             Fix For: 4.0.M4
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> While using EJBQLQuery, the alias name is not working if it is in mixed case and throws some exception saying: "unmapped id variable:"
> Eg:
> Working:
> EJBQLQuery query = new EJBQLQuery("SELECT artistAlias from Artist artistAlias JOIN artistalias.paintings paintingsAlias where artistalias.artistName = 'Abcd');
> Not Working:
> EJBQLQuery query = new EJBQLQuery("SELECT artistAlias from Artist artistAlias JOIN artistAlias.paintings paintingsAlias where artistAlias.artistName = 'Abcd');
> We declared the alias variable as "artistAlias" but it is not working if you say artistAlias.artistName and working if you say artistalias.artistName
> In Compiler.java class, visitFromItem... method
> while adding the alias variable name in the dictionary we convert it into lower case
> // per JPA spec, 4.4.2, "Identification variables are case insensitive."
> String id = normalizeIdPath(expression.getId());
> ClassDescriptor old = descriptorsById.put(id, descriptor);
> but in visitPath... method while retrieving the alias variable name from the dictionary we are not converting to lower case.
>                 
> this.id = ((EJBQLPath) expression).getId();
> this.descriptor = descriptorsById.get(id);
> if (descriptor == null) {
>           throw new EJBQLException("Unmapped id variable: " + id);
>           }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)