Thanks a lot Andrus! I’m going to play around a little with this and see if I can’t make something useful of it :)
Cheers, - hugi > On 27. júl. 2015, at 08:49, Andrus Adamchik <and...@objectstyle.org> wrote: > > In the most general case adding support for a new kind of expression requires > the following: > > 1. Support in ExpressionFactory and Property classes (though see comment > below on CollectionProperty) > 2. Support in Expression parser (so that the expression can be created from > String) > 3. Support in SelectTranslator (so that the expression can be converted into > SQL). > > In your case a minimal implementation can be quite simple: implement #1 to > work as outer join example ("a.paintingArray+ = null"). So existing #2 and #3 > will be reused. Perhaps we create a Property subclass for to-many > relationships (CollectionProperty or something) that will have that extra > method for empty. Then you will also need to tweak cgen templates so that > CollectionProperty is included in generated classes. > > Next step may be adding EJBQL syntax to Expression parser (#2): path IS [NOT] > EMPTY > > And finally we may decide to generate SQL different from OUTER JOIN (EXISTS, > etc.). Only here this expression becomes truly "new". If you get to this > step, let's discuss it separately on this list. We will need to discuss the > behavior and SQL we should generate. Also Alex Kolonitsky is now working on a > new SelectTranslator to include aggregates, etc., so this step will likely > overlap with his work. > > Andrus > > >> On Jul 24, 2015, at 7:56 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >> >> Indeed :). I’ve been looking at the Expression classes for a while now and >> they look a little daunting. Any recommendations on where to start? Is there >> a developer guide or an annotated example implementation somewhere? >> >> - hugi >> >> >> >>> On 24. júl. 2015, at 15:59, Andrus Adamchik <and...@objectstyle.org> wrote: >>> >>> Classic open source - "scratch your own itch" :) >>> >>> >>>> On Jul 24, 2015, at 6:54 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >>>> >>>> Thanks Andrus, we’ll revert to EJBQL for now. >>>> >>>> Looks like an excellent opportunity to try and implement my first >>>> Expression class :) >>>> >>>> - hugi >>>> >>>> >>>> >>>>> On 24. júl. 2015, at 15:36, Andrus Adamchik <and...@objectstyle.org> >>>>> wrote: >>>>> >>>>> We should add it. For now OUTER JOIN should do the trick: >>>>> >>>>> "a.paintingArray+ = null" >>>>> >>>>> Also EJBQL syntax supports "IS [NOT] EMPTY" : >>>>> >>>>> "SELECT a FROM Artist a WHERE a.paintingArray IS EMPTY" >>>>> >>>>> Andrus >>>>> >>>>>> On Jul 24, 2015, at 5:51 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >>>>>> >>>>>> Hi all. >>>>>> Does Cayenne have an Expression class that allows searching for objects >>>>>> with an empty to-many relationships? If not, any pointers towards a >>>>>> sensible approach? >>>>>> >>>>>> Cheers, >>>>>> - hugi >>>>>> >>>>>> // Hugi Thordarson >>>>>> // http://www.loftfar.is/ <http://www.loftfar.is/> >>>>>> // s. 895-6688 >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >