Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
4.0.M4
Description
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)
Attachments
Issue Links
- links to