|
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> |
