For your first case, be sure that $select also returns a field named id.
For your second case, you have rooted your query on AppleTree, but you
are basing your query as if you were rooted on Apple. Provide a path
from AppleTree to Apple.
SelectQuery sq = new SelectQuery(AppleTree.class,
ExpressionFactory.matchExp(AppleTree.APPLES + "." + Apple.COLOR,
"red") );
On 3/3/07, Marcin Skladaniec <marci..sh.com.au> wrote:
> 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 - 10:22:42 EST