Thanks. I'll have to give that a go over the weekend. Unfortunately, my API structure is centered around SelectQuery and a visitor for adding expressions and orderings. Changing the root query type will require a few more changes than I was hoping for. At least it'll give me an excuse to finally play with EJB QL.
-- Kevin Menard Servprise International, Inc. Remote reboot & power control for your network www.servprise.com +1 508.892.3823 x308 > -----Original Message----- > From: Andrus Adamchik [mailto:[EMAIL PROTECTED] > Sent: Thursday, February 21, 2008 8:56 AM > To: [email protected] > Subject: Re: Queries based on relationship size > > EJBQL query with outer joins should help: > > 1. select c from Customer c JOIN c.orderHistory > > (inner join filters customers with Orders, so this is like a > regular SelectQuery) > > 2. select c from Customer c LEFT JOIN c.orderHistory d WHERE d is null > > (outer join combined with the WHERE clause should allow fetching > customers with no orders) > > Two caveats: we still need to add pagination support per CAY-963; I > may have taken a few _temporary_ shortcuts in the EJBQL parser that > may cause trouble with flattened relationships, so let me know if you > run into problems. > > Andrus > > > > On Feb 21, 2008, at 3:05 AM, Kevin Menard wrote: > > > Greetings, > > > > I'm running into a little difficulty performing a query that I think > > comes up often enough that it should be fairly straightforward. > > > > I have a schema similar to the following: > > > > Customer <--- BillingInfo <--- Order > > > > I've mapped the read-only relationship "orderHistory" from Customer > to > > Order. > > > > Now I'd like to perform two queries. One for customers with orders > > and > > one for customers without. I'd rather not filter in the app itself > > because I'd like to paginate the result lists. > > > > Is there a way to do this without resulting to an SQLTemplate query? > > > > Thanks, > > Kevin > > > > -- > > Kevin Menard > > Servprise International, Inc. > > Remote reboot & power control for your network > > www.servprise.com +1 508.892.3823 x308 > > > > > >
