vertical inheritance

From: Marcin Skladaniec (marci..sh.com.au)
Date: Tue Apr 17 2007 - 05:11:37 EDT

  • Next message: jerome moliere: "Copying objects from one database to another"

    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



    This archive was generated by hypermail 2.0.0 : Tue Apr 17 2007 - 05:12:38 EDT