Re: Expression help

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Jan 10 2010 - 07:30:56 EST

  • Next message: Mike Kienenberger: "Re: Expression help"

    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 <andru..bjectstyle.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



    This archive was generated by hypermail 2.0.0 : Sun Jan 10 2010 - 07:31:33 EST