[ 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)