A great approach to break our deadlock of on this feature! But maybe we leave a 
bit more room for future extension by defining an interface for generics 
selecting query:

interface Select<T>

SelectQuery<T> extends QualifiedQuery implements Select<T>

List<T> performQuery(Select <T> query)

Then we can reuse the same ObjectContext method for other queries we might 
invent.

Andrus


On Dec 10, 2012, at 9:05 AM, John Huss (JIRA) <[email protected]> wrote:
>     [ 
> https://issues.apache.org/jira/browse/CAY-1294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
>  ]
> 
> John Huss updated CAY-1294:
> ---------------------------
> 
>    Attachment: 0002-Minimize-compiler-warnings-about-missing-type-parame.patch
>                0001-Add-type-parameter-to-SelectQuery-to-indicate-query-.patch
> 
> Here is an implementation of a generified SelectQuery.  It doesn't require 
> any new API - there is simply an overloaded version of 
> ObjectContext.performQuery for SelectQuery<T> that returns List<T>.  
> 
> <T> List<T> performQuery(SelectQuery<T> query);
> 
> The <T> is unbounded because it has to support DataRows in addition to 
> Persistent objects.  The end result of course is that you can avoid having to 
> cast the query result from List to List<Artist> and you avoid the compiler 
> warning.  This seems like a simple win - any objections?
> 
> I also added a static method to create an instance because if you use this 
> you can avoid repeating the class name twice, as in new 
> SelectQuery<Artist>(Artist.class, null), which feels very tedious.  So if you 
> prefer you can call SelectQuery.from(Artist.class, null) instead and it will 
> infer List<Artist> as the query result type.
> 
> public static <T> SelectQuery<T> from(Class<T> rootClass, Expression 
> qualifier);
> 
>> Generify query
>> --------------
>> 
>>                Key: CAY-1294
>>                URL: https://issues.apache.org/jira/browse/CAY-1294
>>            Project: Cayenne
>>         Issue Type: Improvement
>>         Components: Core Library
>>           Reporter: Ari Maniatis
>>           Assignee: Andrus Adamchik
>>            Fix For: Undefined future
>> 
>>        Attachments: 
>> 0001-Add-type-parameter-to-SelectQuery-to-indicate-query-.patch, 
>> 0002-Minimize-compiler-warnings-about-missing-type-parame.patch
>> 
>> 
>> Although most of the generics work has been completed for 3.0, 'query' is 
>> still largely untouched. From a mailing list post by Andrus, here are 
>> possible query result types:
>> ? extends Persistent
>> ? extends Object (unfinished POJO implementation)
>> CayenneDataObject (as in "generic persistence" [1])
>> DataRow
>> scalar
>> Object[] (a mix of scalars and any of the above)
>> Certainly having a typed result list would be very useful in the most common 
>> case of <? extends Persistent>.
> 
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA administrators
> For more information on JIRA, see: http://www.atlassian.com/software/jira
> 

Reply via email to