[ 
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