[ 
https://issues.apache.org/jira/browse/JDO-652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16608457#comment-16608457
 ] 

Michael Bouschen edited comment on JDO-652 at 9/10/18 8:18 PM:
---------------------------------------------------------------

Thanks for the link Andy.

Following your proposal, I'm struggling with numeric types. Suppose I have an 
Employee query with filter:
"this.salary > (IF (this.department.name == 'Development') 15000.0 ELSE 
25000.0)". 
Then the JDOQLTypedQuery would look like
{noformat}
JDOQLTypedQuery<Employee> query = getPM().newJDOQLTypedQuery(Employee.class);
QEmployee cand = QEmployee.candidate();
IfElseExpression<Double> ifExpr = query.ifElseExpression(Double.class);
ifExpr.ifThen(cand.department.name.eq("Development"), 15000.0).elseEnd(25000.0);
query.filter(cand.salary.gt(ifExpr));{noformat}
But the expression "cand.salary.gt(ifExpr)" does not compile. The compiler 
complains that there is not method gt taking a IfElseExpression<Double>. It 
would compile if the gt argument would be of type IfElseExpression<Number>.

Do you have an idea?


was (Author: mbo):
Thanks for the link Andy.

Following your proposal, I'm struggling with numeric types. Suppose I have an 
Employee query with filter: "this.salary > (IF (this.department.name == 
'Development') 15000.0 ELSE 25000.0)". Then the JDOQLTypedQuery would look like
{noformat}
JDOQLTypedQuery<Employee> query = getPM().newJDOQLTypedQuery(Employee.class);
QEmployee cand = QEmployee.candidate();
IfElseExpression<Double> ifExpr = query.ifElseExpression(Double.class);
ifExpr.ifThen(cand.department.name.eq("Development"), 15000.0).elseEnd(25000.0);
query.filter(cand.salary.gt(ifExpr));{noformat}
But the expression "cand.salary.gt(ifExpr)" does not compile. The compiler 
complains that there is not method gt taking a IfElseExpression<Double>. It 
would compile if the gt argumnet would be of type IfElseExpression<Number>.

Do you have an idea?

> Provision of a typesafe refactor-friendly query capability for JDOQL
> --------------------------------------------------------------------
>
>                 Key: JDO-652
>                 URL: https://issues.apache.org/jira/browse/JDO-652
>             Project: JDO
>          Issue Type: New Feature
>          Components: api, specification, tck
>            Reporter: Andy Jefferson
>            Assignee: Michael Bouschen
>            Priority: Major
>             Fix For: JDO 3.2
>
>         Attachments: JDO-652-api-patch-Andy.txt, JDO-652-patch3.txt, 
> typesafe.patch, typesafe_manifest.patch
>
>
> There are various querying capabilities of this type around. JPA2 has its 
> Criteria query API. Third party solutions like QueryDSL also exist, in its 
> case providing a JDOQL implementation (as well as JPQL, and HQL). We should 
> seriously consider introducing something along these lines in the JDO2.4 
> timeframe. 
> There is a comparison of JPA Criteria with QueryDSL over at 
> http://source.mysema.com/forum/mvnforum/viewthread_thread,49



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to