You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "wilesun (JIRA)" <ji...@apache.org> on 2008/08/09 13:56:44 UTC

[jira] Created: (OPENJPA-690) JPQL select express support alias

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.


[jira] Updated: (OPENJPA-690) JPQL select express support alias

Posted by "wilesun (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

wilesun updated OPENJPA-690:
----------------------------

    Fix Version/s:     (was: 1.1.1)
                   1.3.0

> 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.3.0
>
>
> 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.