You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Saravana Kumar M (JIRA)" <ji...@apache.org> on 2016/12/18 16:16:58 UTC
[jira] [Created] (CAY-2175) AliasName used in EJBQLQuery is not
working if it contains mixed case.
Saravana Kumar M created CAY-2175:
-------------------------------------
Summary: 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
Fix For: 4.0.M4
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)