You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Bradford Pielech <br...@alphatech.com> on 2004/06/09 16:28:34 UTC
incorrect fk-pointing-to-element-class value when using
recursive collections and doclet
Hello:
I have a class that acts like a standard DAG node, i.e. it has multiple
parents and children that are each DAG nodes. I am using the Xdoclet
module to create the repository file and torque to create SQL and
database. I am representing the parent and children relationships using an
indirection table. My problem is this- the XDoclet module incorrectly
generates the fk-pointing-to-element-class value. Below is the generated
mapping file and corresponding java source. Notice that the
fk-pointing-to-element-class element for the children collection should
have a value of "child_id".
If I manually change this value, then the mapping and sql are correct, and
my program behaves as I expect.
Mapping snippet:
----------------------------
<class-descriptor
class="SimpleDAGNode"
table="effect"
>
<field-descriptor
name="ID"
column="ebo_id"
jdbc-type="VARCHAR"
primarykey="true"
length="35"
>
</field-descriptor>
<collection-descriptor
name="children"
element-class-ref="SimpleDAGNode"
indirection-table="parent_children_table"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
>
<fk-pointing-to-this-class column="parent_id"/>
<fk-pointing-to-element-class column="parent_id"/>
</collection-descriptor>
<collection-descriptor
name="parents"
element-class-ref="SimpleDAGNode"
indirection-table="parent_children_table"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
>
<fk-pointing-to-this-class column="child_id"/>
<fk-pointing-to-element-class column="parent_id"/>
</collection-descriptor>
</class-descriptor>
--------------------
Java source:
-----------------------------
public class SimpleDAGNode {
/**
* @ojb.collection
element-class-ref="com.alphatech.ebo.datamodels.SimpleDAGNode"
* auto-retrieve="true"
* auto-update="true"
* auto-delete="true"
* indirection-table="parent_children_table"
* foreignkey="parent_id"
*/
protected List children;
/**
* @ojb.field primarykey="true"
* column="ebo_id"
* jdbc-type="VARCHAR"
* length="35"
*/
protected String ID;
/**
* @ojb.collection
element-class-ref="com.alphatech.ebo.datamodels.SimpleDAGNode"
* auto-retrieve="true"
* auto-update="true"
* auto-delete="true"
* indirection-table="parent_children_table"
* foreignkey="child_id"
*/
protected List parents;
------------------------------------
If I switch the order that parents and children are declared in the java
file, the problem happens with parents, not children. Thus, it appears
something is amiss in the XDoclet.
Thank you very much for your assistance,
Brad
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org