cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hugi Thordarson <h...@karlmenn.is>
Subject Re: Expression to look for objects with an empty to-many relationship?
Date Tue, 28 Jul 2015 07:59:09 GMT
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 <andrus@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 <hugi@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 <andrus@objectstyle.org> wrote:
>>> 
>>> Classic open source - "scratch your own itch" :) 
>>> 
>>> 
>>>> On Jul 24, 2015, at 6:54 PM, Hugi Thordarson <hugi@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 <andrus@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 <hugi@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
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message