Hi

In our project we have tried using inheritance, this is the simplification of the map we are using:

<db-entity name="AbstractNode">
<db-attribute name="id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
                <db-attribute name="isDeleted" type="BOOLEAN"/>
                <db-attribute name="modifiedOn" type="TIMESTAMP"/>
                <db-attribute name="name" type="VARCHAR" length="512"/>
                <db-attribute name="nodeType" type="VARCHAR" length="128"/>
</db-entity>
<obj-entity name="AbstractNode" className="ish.oncourse.server.cayenne.AbstractNode" clientClassName="ish.oncourse.cayenne.AbstractNode" lock- type="optimistic" dbEntityName="AbstractNode" superClassName="ish.oncourse.server.cayenne.glue.CayenneDataObject" clientSuperClassName="ish.oncourse.cayenne.glue.PersistentObject"> <qualifier><![CDATA[(isDeleted = null) or (isDeleted = 0)]]></ qualifier> <obj-attribute name="isDeleted" type="java.lang.Boolean" db- attribute-path="isDeleted"/> <obj-attribute name="modifiedOn" type="java.util.Date" db-attribute- path="modifiedOn"/> <obj-attribute name="name" type="java.lang.String" db-attribute- path="name"/> <obj-attribute name="nodeType" type="java.lang.String" db-attribute- path="nodeType"/>
</obj-entity>
<obj-entity name="DefaultNode" superEntityName="AbstractNode" className="ish.oncourse.server.cayenne. DefaultNode" clientClassName="ish.oncourse.cayenne. DefaultNode" lock- type="optimistic">
                <qualifier><![CDATA[nodeType = "D"]]></qualifier>
</obj-entity>

committing new objects works ok, but fetching the objects does not work (the presence of qualifier in DefaultNode does not matter): getContext().performQuery(new SelectQuery(Term.class)) throws exception on server which does not tell much:

17/04/2007 19:05:31 com.caucho.hessian.server.HessianSkeleton invoke
WARNING: org.apache.cayenne.CayenneRuntimeException: [v.$ {project.version} ${project.build.date} ${project.build.time}] Exception processing message org.apache.cayenne.remote.QueryMessage org.apache.cayenne.CayenneRuntimeException: [v.${project.version} $ {project.build.date} ${project.build.time}] Exception processing message org.apache.cayenne.remote.QueryMessage at org.apache.cayenne.remote.service.BaseRemoteService.processMessage (BaseRemoteService.java:169)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
at com.caucho.hessian.server.HessianSkeleton.invoke (HessianSkeleton.java:157) at com.caucho.hessian.server.HessianServlet.service (HessianServlet.java:365) at ish.oncourse.server.CayenneServlet.service (CayenneServlet.java:102) at org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:428) at org.mortbay.jetty.servlet.ServletHandler.dispatch (ServletHandler.java:677) at org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:568)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
        at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service (HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext (HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle (HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection (SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle (ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run (ThreadPool.java:534)


Is the inheritance functionality is supposed to work with remote persistence ? Maybe there is an error in our code ?

Marcin

Reply via email to