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
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to