In my mapping (see attached file) I have a class
"org.dharma.job.TaskWrapper" that has 2 items in it's identity field. 
One of the items points to a field that is of type "integer".  The other
item points to a field that is of type "org.dharma.job.JobWrapper". 
When I try to create a job with a task, JDO throws the following
exception:

Exception in thread "main" No class found for org.dharma.job.JobWrapper.
        at org.postgresql.Connection.putObject(Connection.java:812)
        at
org.postgresql.jdbc2.PreparedStatement.setObject(PreparedStatement.java:596)
        at org.exolab.castor.jdo.engine.SQLEngine.create(SQLEngine.java:561)
        at org.exolab.castor.persist.ClassMolder.create(ClassMolder.java:891)
        at org.exolab.castor.persist.LockEngine.create(LockEngine.java:458)
        at
org.exolab.castor.persist.TransactionContext.create(TransactionContext.java:803)
        at
org.exolab.castor.jdo.engine.DatabaseImpl.create(DatabaseImpl.java:338)
        at org.dharma.middleware.TestJDO.<init>(TestJDO.java:73)
        at org.dharma.middleware.TestJDO.main(TestJDO.java:36)

Is it not possible to have a complex identity field like that, or am I
doing something else wrong?

Thanks
-- 
Jesse Greenwald <[EMAIL PROTECTED]>
Kansas State University
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                           "http://castor.exolab.org/mapping.dtd";>
<mapping>

  <class name="org.dharma.job.JobWrapper"
         identity="id">
    <map-to table="job" xml="job"/>

    <field name="id" type="integer">
      <sql name="id"/>
      <xml name="id" type="integer"/>
    </field>

    <field collection="vector" name="task" type="org.dharma.job.TaskWrapper"
           get-method="getTaskVector"
	   set-method="setTaskVector">
      <xml name="task" node="element"/>
      <sql/>
    </field>

    <field name="status-text" type="string"
           set-method="setStatusText"
	   get-method="getStatusText">
      <sql name="status_text"/>
      <xml name="status-text" type="string"/>
    </field>

    <field name="status-code" type="integer"
           set-method="setStatusCode"
	   get-method="getStatusCode">
      <sql name="status_code"/>
      <xml name="status-code" type="integer"/>
    </field>

  </class>



  <!-- Mapping for Task -->
  <class name="org.dharma.job.TaskWrapper"
         identity="job id" depends="org.dharma.job.JobWrapper">
    <map-to table="task" xml="task"/>

    <field name="job" type="org.dharma.job.JobWrapper">
      <sql name="job"/>
    </field>

    <field name="id" type="integer">
      <sql name="id"/>
      <xml name="id" node="element"/>
    </field>

    <field name="type" type="string" >
      <sql name="type"/>
      <xml name="type" node="element"/>
    </field>

    <field name="resource" collection="vector" type="org.dharma.job.ResourceWrapper"
           get-method="getResourceVector"
	   set-method="setResourceVector">
      <xml name="resource" node="element"/>
      <sql/>
    </field>

    <field collection="vector" name="dependency" type="org.dharma.job.DependencyWrapper"
           get-method="getDependencyVector"
	   set-method="setDependencyVector">
      <sql/>
      <xml name="dependency" node="element"/>
    </field>

    <field name="status-text" type="string"
           set-method="setStatusText"
	   get-method="getStatusText">
      <sql name="status_text"/>
      <xml name="status-text" type="string"/>
    </field>

    <field name="status-code" type="integer"
           set-method="setStatusCode"
	   get-method="getStatusCode">
      <sql name="status_code"/>
      <xml name="status-code" type="integer"/>
    </field>
    
  </class>

  <!-- DependencyWrapper -->
  <class name="org.dharma.job.DependencyWrapper"
         identity="dependency" depends="org.dharma.job.TaskWrapper">
    <map-to table="task_dependencies" xml="dependency"/>

    <field name="job" type="org.dharma.job.JobWrapper">
      <sql name="job"/>
    </field>

    <field name="task" type="org.dharma.job.TaskWrapper">
       <sql name="task"/>
    </field>

    <field name="dependency" type="integer">
      <sql name="dependency"/>
      <xml name="dependency" type="integer"/>
    </field>
  </class>



  <!-- Mapping for Resource -->
  <class name="org.dharma.job.ResourceWrapper"
         identity="id" depends="org.dharma.job.TaskWrapper">
    <map-to table="resource" xml="resource"/>

    <field name="job" type="org.dharma.job.JobWrapper">
      <sql name="job"/>
    </field>

    <field name="task" type="org.dharma.job.TaskWrapper">
      <sql name="task"/>
    </field>

    <field name="id" type="integer">
      <sql name="id"/>
      <xml name="id" node="element"/>
    </field>

    <field name="type" type="string" >
      <sql name="type"/>
      <xml name="type" node="element"/>
    </field>
    
    <field collection="vector" name="attribute" type="org.dharma.job.Attribute"
           get-method="getAttributeVector"
	   set-method="setAttributeVector">
      <sql/>
      <xml name="attribute" node="element"/>
    </field>

    <field name="url" type="string">
      <sql name="url"/>
      <xml name="url" node="element"/>
    </field>

    <field name="data">
      <sql name="data"/>
      <xml name="data" node="element"/>
    </field>

  </class>



  <!-- Attribute -->
  <class name="org.dharma.job.Attribute" identity="name">
    <map-to xml="attribute" table="attributes"/>
    <field name="name" type="string">
      <sql name="name"/>
      <xml name="name" node="element"/>
    </field>
    <field name="value">
      <sql name="value"/>
      <xml name="value" node="element"/>
    </field>
  </class>

</mapping>

Reply via email to