Re: expression to find out null relationship

From: Marcin Skladaniec (marci..sh.com.au)
Date: Sat Mar 03 2007 - 00:47:03 EST

  • Next message: Mike Kienenberger: "Re: expression to find out null relationship"

    Hi
    I'm still struggling trying to fetch only AppleTrees with Apples
    which are red.

    Apple -AppleTree is a simple many-to-one relationship. I dont want to
    fault every appleTree and apple, I want to use either NamedQuery or
    Expression.
    When I attempt with NamedQuery like:
    <sql><![CDATA[SELECT $select FROM AppleTree join Apple on
    (AppleTree.id = Apple.treeId) where (Apple.color = 'red') ]]></sql>
    I get a correct sql response, but cayenne fails to build up the
    entities out of it:
    org.apache.cayenne.CayenneRuntimeException: [v.3.0-SNAPSHOT Jan 19
    2007 05:26:38] Remote error. URL - http://localhost:8181/angel-server-
    cayenne; CAUSE - [v.3.0-SNAPSHOT Jan 19 2007 05:26:38] [v.3.0-
    SNAPSHOT Jan 19 2007 05:26:38] Exception processing message
    org.apache.cayenne.remote.QueryMessage. Root cause: [v.3.0-SNAPSHOT
    Jan 19 2007 05:26:38] Null value for 'id'.

    when I try with Expression the expression is ignored and makes no
    difference, (is there an automatic join clause created ?):
    SelectQuery sq = new SelectQuery(AppleTree.class,
    ExpressionFactory.matchExp(Apple.COLOR, "red") );

    Does someone have any hints ?
    Marcin

    On 01/03/2007, at 12:48 AM, Mike Kienenberger wrote:

    > You may be right. I vaguely recall now that this only works for
    > to-one relations. For to-many relations, I can't remember how I
    > handled this.
    >
    >
    > On 2/28/07, Marcin Skladaniec <marci..sh.com.au> wrote:
    >> Hi
    >> Mike, the ExpressionFactory.noMatchExp(AppleTree.APPLE_PROPERTY,
    >> null) does not work. I tried. I recollect I used Expression which
    >> aimed other way around (from many to one, example :
    >> ExpressionFactory.noMatchExp(Apple.APPLE_TREE_PROPERTY, null) ).
    >> Marcin
    >>
    >>
    >> On 28/02/2007, at 11:11 AM, Mike Kienenberger wrote:
    >>
    >> > ExpressionFactory.noMatchExp(AppleTree.APPLE_PROPERTY, null)
    >> >
    >> > Be aware that you cannot safely combine this expression with other
    >> > expressions due to outer join issues, unless you're using the outer
    >> > join patch. I think there was another null-related fix mixed into
    >> > that patch.
    >> >
    >> > On 2/27/07, Marcin Skladaniec <marci..sh.com.au> wrote:
    >> >> Hi
    >> >>
    >> >> I have a simple one-to-many relationship : AppleTree - Apple. I'm
    >> >> doing a query :
    >> >> new SelectQuery(AppleTree.class, expression)
    >> >> how should the expression look like to return the trees with
    >> apples ?
    >> >> expression = ExpressionFactory.noMatchExp(AppleTree.APPLES, null)
    >> >> does not seem to work, neither does
    >> >> expression = ExpressionFactory.noMatchExp("applesArray", null)
    >> >>
    >> >> Regards
    >> >> Marcin
    >> >>
    >>
    >> Marcin
    >>
    >>
    >>
    >>

    Marcin



    This archive was generated by hypermail 2.0.0 : Sat Mar 03 2007 - 00:47:43 EST