I'm attempting to hydrate a graph based on an attribute of a dependent object that holds a m-n relationship with the root object.
 
The SQL that is being generated is referring to a table that doesn't exist, poem_0.  Any ideas?
 
-----------------------------------------------------------
Stack Trace:
-----------------------------------------------------------
 
org.exolab.castor.jdo.PersistenceException:
Nested error: java.sql.SQLException:
Column not found: Unknown column 'poem_0.poemauthor_id' in 'where clause' while executing SELECT poemauthor.id, poemauthor.email, poemauthor.webSite, ContactInfo.id, name.id, authorpoemresolution.poem_id
FROM poemauthor
LEFT OUTER JOIN ContactInfo ON poemauthor.id=ContactInfo.poemauthor_id
LEFT OUTER JOIN name ON poemauthor.id=name.poemauthor_id
LEFT OUTER JOIN authorpoemresolution ON poemauthor.id=authorpoemresolution.poemauthor_id
LEFT OUTER JOIN poem poem_0 ON poemauthor.id=poem_0.poemauthor_id
WHERE poemauthor.id=poem_0.poemauthor_id
AND
(poemauthor.id = 'poemAuthorOid1'
and
poem_0.title = 'nameOid1')
 
-----------------------------------------------------------
OQL:
-----------------------------------------------------------
 
SELECT a FROM
ditd.poet.domain.PoemAuthor a 
WHERE
id = "primaryKey" and a.poems.title = "poemName"
 
-----------------------------------------------------------
Mapping XML:
-----------------------------------------------------------
 
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                           "http://castor.exolab.org/mapping.dtd">
<mapping>
 
  <!--  Mapping for PoemAuthor  -->
  <class name="ditd.poet.domain.PoemAuthor" identity="id">
    <description>Author definition</description>
    <map-to table="poemauthor" xml="poemauthor" />
    <field name="id" type="string">
      <sql name="id" type="varchar" />
      <xml name="id" node="attribute"/>
    </field>
    <field name="email" type="string">
      <sql name="email" type="varchar" />
      <xml name="email" node="element" />
    </field>
    <field name="webSite" type="string">
      <sql name="webSite" type="varchar" />
      <xml name="webSite" node="element" />
    </field>
 
    <!-- PoemAuthor has a one-to-many relationship with ContactInfo -->
    <field name="contactInfo" type="ditd.poet.domain.ContactInfo" collection="vector" required="true">
      <sql many-key="poemauthor_id"/>
    </field>
 
    <!-- PoemAuthor has one-to-many relationship with Names -->
    <field name="names" type="ditd.poet.domain.Name"
           collection="vector" required="true">
      <sql many-key="poemauthor_id"/>
      <xml name="name" node="element"/>
    </field>
 
    <!-- PoemAuthor has many-to-many relationsip with Poem -->
    <field name="poems" type="ditd.poet.domain.Poem"
           collection="vector">
      <sql name="poem_id"
           many-table="authorpoemresolution" many-key="poemauthor_id" />
      <xml name="poemauthor" node="element" />
    </field>
  </class>
 
  <!--  Mapping for Name  -->
  <class name="ditd.poet.domain.Name" identity="id" depends="ditd.poet.domain.PoemAuthor">
  <map-to table="name" xml="name" />
    <field name="id" type="string">
      <sql name="id" type="char"/>
      <xml/>
    </field>
    <field name="firstName" type="string">
      <sql name="firstName" type="varchar"/>
      <xml node="element" />
    </field>
    <field name="middleName" type="string">
      <sql name="middleName" type="varchar"/>
      <xml node="element" />
    </field>
    <field name="lastName" type="string">
      <sql name="lastName" type="varchar"/>
      <xml node="element" />
     </field>
     <field name="akaName" type="string">
      <sql name="akaName" type="varchar"/>
      <xml node="element" />
     </field>
 
  <!-- Name has a many-to-one relationship with PoemAuthor -->
  <field name = "poemAuthor" type = "ditd.poet.domain.PoemAuthor">
      <sql name="poemauthor_id" />
        <xml name = "poemauthor" node="element" />
     </field>
  </class>
 
  <!--  Mapping for Poem  -->
  <class name="ditd.poet.domain.Poem" identity="id">
    <map-to table="poem" xml="poem" />
    <field name="id" type="string">
      <sql name="id" type="char"/>
      <xml/>
    </field>
    <field name="title" type="string">
      <sql name="title" type="char"/>
      <xml node="element" />
    </field>
    <field name="creationDate" type="date">
      <sql name="creation_date" type="date"/>
      <xml node="element" />
    </field>
 
    <field name="copyrightDate" type="date">
      <sql name="copyright_date" type="date"/>
      <xml node="element" />
    </field>
 
     <field name="poemContent" type="string">
      <sql name="poemContent" type="varchar"/>
     </field>
 
    <!-- Poem has many-to-many relationsip with PoemAuthor -->
    <field name="poemAuthors" type="ditd.poet.domain.PoemAuthor" collection="vector">
       <sql name="poemauthor_id" many-table="authorpoemresolution" many-key="poem_id" />
       <xml name="poem" node="element" />
    </field>
  </class>
 
  <!--  Mapping for ContactInfo  -->
  <class name="ditd.poet.domain.ContactInfo" identity="id" depends="ditd.poet.domain.PoemAuthor">
    <map-to table="ContactInfo" xml="contactInfo" />
    <field name="id" type="string">
      <sql name="id" type="char"/>
      <xml name="id" node="element"/>
    </field>
    <field name="city" type="string">
      <sql name="city" type="varchar"/>
      <xml name="city" node="element"/>
    </field>
    <field name="country" type="string">
      <sql name="country" type="varchar"/>
      <xml name="country" node="element"/>
    </field>
    <field name="phone" type="string">
      <sql name="phone" type="varchar"/>
      <xml name="id" node="element"/>
    </field>
    <field name="phone2" type="string">
      <sql name="phone2" type="varchar"/>
      <xml name="id" node="element"/>
    </field>
    <field name="street" type="string">
      <sql name="street" type="varchar"/>
      <xml name="id" node="element"/>
    </field>
    <field name="state" type="string">
      <sql name="state" type="varchar"/>
      <xml name="id" node="element"/>
    </field>
    <field name="zip" type="string">
      <sql name="zip" type="varchar"/>
      <xml name="id" node="element"/>
    </field>
 
    <!-- ContactInfo has a many-to-one relationship with PoemAuthor -->
    <field name = "poemAuthor" type = "ditd.poet.domain.PoemAuthor">
        <sql name="poemauthor_id" />
        <xml name="poemauthor" node="element"/>
    </field>
  </class>
</mapping>
 
 

Reply via email to