Return-Path: Delivered-To: apmail-cayenne-user-archive@www.apache.org Received: (qmail 44274 invoked from network); 6 Aug 2008 18:47:54 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Aug 2008 18:47:54 -0000 Received: (qmail 71524 invoked by uid 500); 6 Aug 2008 18:47:51 -0000 Delivered-To: apmail-cayenne-user-archive@cayenne.apache.org Received: (qmail 71516 invoked by uid 500); 6 Aug 2008 18:47:51 -0000 Mailing-List: contact user-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cayenne.apache.org Delivered-To: mailing list user@cayenne.apache.org Received: (qmail 71502 invoked by uid 99); 6 Aug 2008 18:47:51 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 Aug 2008 11:47:51 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [208.78.103.231] (HELO vorsha.objectstyle.org) (208.78.103.231) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 06 Aug 2008 18:46:56 +0000 Received: (qmail 2273 invoked from network); 6 Aug 2008 18:47:23 -0000 Received: from unknown (HELO ?IPv6:::1?) (127.0.0.1) by localhost with SMTP; 6 Aug 2008 18:47:23 -0000 Message-Id: From: Andrus Adamchik To: user@cayenne.apache.org In-Reply-To: Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: Re: Using "relationship != null" qualifier with ObjEntity Inheritance Date: Wed, 6 Aug 2008 14:47:22 -0400 References: <1A90273C-35A1-474F-BA51-6D3B22048E28@objectstyle.org> X-Mailer: Apple Mail (2.926) X-Virus-Checked: Checked by ClamAV on apache.org Ok, I see. This indeed is a limitation of the inheritance algorithm. We can't evaluate the inheritance qualifier expression in-memory in this case. We can probably improve on that in the future, but there is no easy fix. Andrus On Aug 6, 2008, at 2:29 PM, Dave Dombrosky wrote: > Yes it is just a 1:1 mapping on the relationship. > > Here is the stack trace: > > org.apache.cayenne.exp.ExpressionException: [v.3.0-SNAPSHOT Aug 01 > 2008 19:55:10] Error evaluating expression 'db:some_relationship != > null' > at > org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:331) > at org.apache.cayenne.exp.Expression.match(Expression.java:367) > at > org > .apache > .cayenne > .map > .EntityInheritanceTree.entityMatchingRow(EntityInheritanceTree.java: > 97) > at > org > .apache > .cayenne > .map > .EntityInheritanceTree.entityMatchingRow(EntityInheritanceTree.java: > 83) > at > org > .apache > .cayenne.access.ObjectResolver.objectFromDataRow(ObjectResolver.java: > 194) > at > org > .apache > .cayenne > .access.ObjectResolver.objectsFromDataRows(ObjectResolver.java:121) > at > org > .apache > .cayenne > .access > .ObjectResolver.synchronizedObjectsFromDataRows(ObjectResolver.java: > 101) > at org.apache.cayenne.access.DataDomainQueryAction > $ObjectConversionStrategy.toObjects(DataDomainQueryAction.java:591) > at org.apache.cayenne.access.DataDomainQueryAction > $SingleObjectConversionStrategy.convert(DataDomainQueryAction.java: > 661) > at > org > .apache > .cayenne > .access > .DataDomainQueryAction > .interceptObjectConversion(DataDomainQueryAction.java:466) > at > org > .apache > .cayenne > .access.DataDomainQueryAction.execute(DataDomainQueryAction.java:128) > at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:740) > at > org > .apache > .cayenne > .util > .ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:317) > at > org > .apache > .cayenne > .util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java: > 96) > at org.apache.cayenne.access.DataContext.onQuery(DataContext.java: > 1336) > at > org.apache.cayenne.access.DataContext.performQuery(DataContext.java: > 1325) > at > org.apache.cayenne.access.ToOneFault.doResolveFault(ToOneFault.java: > 82) > at > org.apache.cayenne.access.ToOneFault.resolveFault(ToOneFault.java:55) > at > org > .apache > .cayenne.CayenneDataObject.readProperty(CayenneDataObject.java:208) > at > org > .apache > .cayenne.CayenneDataObject.setToOneTarget(CayenneDataObject.java:295) > > -Dave > > > On Wed, Aug 6, 2008 at 11:59 AM, Andrus Adamchik > wrote: >> Could you post a bigger part of the stack trace (at least >> everything that >> has org.apache.cayenne in it)? >> >> From what I can see, this is related to in-memory evaluation of the >> qualifier. If that's a to-one relationship based on FK, intuitively >> this >> should work, but it probably hits a limitation on in-memory >> evaluation. >> >> Andrus >> >> >> On Aug 5, 2008, at 5:23 PM, Dave Dombrosky wrote: >> >>> I am currently trying to use ObjEntity Inheritance in my project, >>> but >>> I am running into some difficulties. I was hoping that I could use >>> "someRelationship != null" as the qualifier, but I get the following >>> error when trying to run the code: >>> >>> org.apache.cayenne.exp.ExpressionException: [v.3.0-SNAPSHOT Aug 01 >>> 2008 19:55:10] Error evaluating expression 'db:some_relationship != >>> null' >>> >>> Am I doing something wrong here, or did I find a bug? >>> >>> -Dave >>> >> >> >