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





Reply via email to