cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Expression help
Date Sun, 10 Jan 2010 12:30:56 GMT
If I understand correctly, the goal is to match artists that must have  
painting that are ALL with the same color. So I think the second OR  
would match artists that have SOME painting of matching color, and  
some of a different color.

But I guess the important thing here is that Andrey and me showed 2  
new capabilities of Cayenne 3.0 that would help with a number of non- 
trivial queries.

Andrus

On Jan 10, 2010, at 2:08 PM, Andrey Razumovsky wrote:

> Or you can use left joins:
> ExpressionFactory.matchExp("paintingsArray+.color",
> null).orExp(ExpressionFactory.matchExp("paintingsArray+.color",  
> blue));
>
> 2010/1/10 Andrus Adamchik <andrus@objectstyle.org>
>
>> This requires Cayenne 3.0 and EJBQLQuery with subquery. Something  
>> like this
>> might work:
>>
>> new EJBQLQuery(
>>   "SELECT a FROM Artist a " +
>>   "WHERE NOT EXISTS " +
>>   "(SELECT p FROM Painting p WHERE p.color <> 'XYZ')";
>>
>> Andrus
>>
>>
>> On Jan 7, 2010, at 2:32 AM, Mark Fraser wrote:
>>
>> Suppose I have an Artists table and a Paintings table with the  
>> usual setup
>>> of the Artist class having a PAINTINGS_ARRAY property.  Suppose  
>>> further
>>> that
>>> the painting has a "color" property that can be a string or null.
>>>
>>> How would I build an Expression such that I get back the Artists  
>>> that have
>>> either no paintings or only paintings with a specific color value  
>>> (or a
>>> null
>>> color value)?
>>>
>>> I am using Cayenne 2.0.4 in case that matters.
>>>
>>> TIA
>>>
>>
>>
>
>
> -- 
> Andrey


Mime
View raw message