JPQL select express support alias
---------------------------------

                 Key: OPENJPA-690
                 URL: https://issues.apache.org/jira/browse/OPENJPA-690
             Project: OpenJPA
          Issue Type: Bug
          Components: kernel
    Affects Versions: 1.1.0
            Reporter: wilesun
             Fix For: 1.1.1


I hope the JPQL supprt the templete:(it can work with hibernate jpa)
select o.id, o.name as aName, o.code aCode form A o where ..

I modifid the jpql.jtt
1.jpql.jtt
void select_expression() #SELECTEXPRESSION : { }
{
        ((aggregate_select_expression()
                | LOOKAHEAD(path()) path()
                | identification_variable()
                | (<OBJECT> "(" identification_variable() ")")
                | constructor_expression()
                | select_extension()
                | string_literal()
                | numeric_literal()) [LOOKAHEAD(1)<AS>] 
[LOOKAHEAD(identification_variable())identification_variable()])
}
2:openjpa-kernel\src\main\java\org\apache\openjpa\kernel\jpql\JPQLExpressionBuilder.java
private Expression assignProjections(JPQLNode parametersNode,
        QueryExpressions exps) {
        int count = parametersNode.getChildCount();
        exps.projections = new Value[count];
        exps.projectionClauses = new String[count];
        exps.projectionAliases = new String[count];

        Expression exp = null;
        for (int i = 0; i < count; i++) {
                JPQLNode parent = parametersNode.getChild(i);
            JPQLNode projNode = firstChild(parent);
            JPQLNode aliasNode = parent.children.length > 1 ? right(parent) : 
null;;
            
            Value proj = getValue(projNode);
            String alias = aliasNode == null ? lastChild(projNode).text : 
aliasNode.text;
            
            exps.projections[i] = proj;
            exps.projectionClauses[i] = assemble(projNode);
            exps.projectionAliases[i] = alias;
        }
        return exp;
    }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to