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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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