mirror of https://github.com/apache/openjpa.git
OPENJPA-595 A common path() action in JPQL.jjt being used for Enum literal causes a simple aliase resolution to fail
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@654626 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b796e1710f
commit
3f9dcdbb76
|
@ -1322,8 +1322,11 @@ public class JPQLExpressionBuilder
|
|||
Object value = field.get(null);
|
||||
return factory.newLiteral(value, Literal.TYPE_UNKNOWN);
|
||||
} catch (NoSuchFieldException nsfe) {
|
||||
if (node.parser.inEnumPath)
|
||||
throw parseException(EX_USER, "no-field",
|
||||
new Object[]{ c.getName(), fieldName }, nsfe);
|
||||
else
|
||||
return getPath(node, false, true);
|
||||
} catch (Exception e) {
|
||||
throw parseException(EX_USER, "unaccessible-field",
|
||||
new Object[]{ className, fieldName }, e);
|
||||
|
|
|
@ -64,6 +64,7 @@ import java.io.*;
|
|||
public class JPQL
|
||||
{
|
||||
String jpql;
|
||||
boolean inEnumPath;
|
||||
|
||||
|
||||
public JPQL (String jpql)
|
||||
|
@ -968,7 +969,9 @@ void enum_primary() : { }
|
|||
|
||||
void enum_literal() : { }
|
||||
{
|
||||
{ inEnumPath = true; }
|
||||
path()
|
||||
{ inEnumPath = false; }
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue