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 >
