Nope, unfortunately (correct me if i'm wrong) Cayenne doesn't support constructors in EJBQL (yet)
2010/1/12 Steve Wells <[email protected]> > Sorry forgot to add using Cay3-RC1 (congrats on the release!) > > 2010/1/12 Steve Wells <[email protected]> > > > Hi All, > > > > I have an EJBQL query selecting a grouped value from a master table > > (Category.name) and the count of detail rows for each grouping (ie count > of > > the Category.questions), so I get results: > > cat1, 5 > > cat2, 3 > > cat3, 10 > > etc... > > > > Ideally what I need to do is get the results into a java List<?>, so I > was > > hoping (by waving magic Cayenne wand!) that this would work: > > > > "select new CategorySummary(c.name, count(q)) from Category c left join > > c.questions q group by c.name" returning a List<CategorySummary>...but I > > can't get it working. Is there a prescribed approach for this? > > > > At the moment I get this: > > > > java.lang.NullPointerException > > at > org.apache.cayenne.ejbql.parser.Compiler.compileEntityResult(Compiler.java:219) > > at > org.apache.cayenne.ejbql.parser.Compiler.compile(Compiler.java:200) > > at > org.apache.cayenne.ejbql.parser.EJBQL$EJBQLDefaultParser.compile(EJBQL.java:30) > > at > org.apache.cayenne.query.EJBQLQuery.getExpression(EJBQLQuery.java:122) > > at > org.apache.cayenne.query.EJBQLQueryMetadata.resolve(EJBQLQueryMetadata.java:38) > > at > org.apache.cayenne.query.EJBQLQuery.getMetaData(EJBQLQuery.java:66) > > at > org.apache.cayenne.util.ObjectContextQueryAction.<init>(ObjectContextQueryAction.java:79) > > at > org.apache.cayenne.access.DataContextQueryAction.<init>(DataContextQueryAction.java:48) > > at > org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1278) > > at > org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1267) > > at > org.apache.click.extras.cayenne.CayenneTemplate.performQuery(CayenneTemplate.java:276) > > > > > > > > CategorySummary.java: > > > > CategorySummary { > > private String name; > > private Number count; > > > > plus getters and setters > > > > The EJB spec says you can do something like: > > > > SELECT NEW com.acme.example.CustomerDetails(c.id, c.status, o.count) > > FROM Customer c JOIN c.orders o > > WHERE o.count > 100 > > > > Does Cayenne support this? > > > > Thanks for any help, > > > > Steve > > > -- Andrey
