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

Craig L Russell commented on JDO-737:
-------------------------------------

Looking at how HAVING is used, it has to be in the context of GROUPBY and has a 
restricted set of expressions that can be used. In particular, the example 
doesn't work because "field3 < 2" isn't an aggregate and isn't a grouping 
expression:

q.filter("field == val").groupBy("field2").having("field3 < 2");

So I'd prefer that the having clause be explicitly contained within the GROUPBY 
to make it clear that there is a dependency and making it easier to debug if 
you get it wrong.

> Change Query API to be "fluent"
> -------------------------------
>
>                 Key: JDO-737
>                 URL: https://issues.apache.org/jira/browse/JDO-737
>             Project: JDO
>          Issue Type: New Feature
>          Components: api, specification, tck
>            Reporter: Andy Jefferson
>             Fix For: JDO 3.2
>
>         Attachments: JDO-737.patch
>
>
> Further to JDO-736 it would be nice to redesign the Query class to have the 
> setter methods as FLUENT. I see two ways of achieving this
> Option1
> Query q = 
> pm.newQuery(Person.class).filter("firstName.startsWith('F')").orderBy("firstName");
> So we add a subset of the setters as methods without "set" so as to align 
> further with the typesafe variant in JDO-652. The existing setXXX methods can 
> be deprecated.
> Option2
> Query q = 
> pm.newQuery(Person.class).setFilter("firstName.startsWith('F')").setOrdering("firstName");
> So we change the return type of (some of) the existing setters. Existing JDO 
> code will need to be recompiled due to the return type change.
> What is decided here needs to coordinate with JDO-652 so that, for example, 
> if JDO-652 comes up with an API like (as currently)
> query.filter(cand.value.lt.40).orderBy(cand.name.asc())
> then this issue matches the API method names, so using the String-based API 
> for the same resultant query the user would do
> query.filter("this.value < 40").orderBy("this.name ASC");



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to