I am having a generation problem. Here is a minimal test case that
demonstrates the problem

3 tables

ItemCategory (CAT_ID)
ItemSubCategory (CAT_ID, SUB_CAT_ID)
Item (CAT_ID, SUB_CAT_ID, ITEM_ID)

Each SubCategory belongs to one and only one Category, each Item belongs to
one and only one SubCategory.
To allow traversal from Category->Item(s), SubCategory->Item(s),
Item->SubCategory, and Item->Category I 
attempted to place a foreign key relationship from item to category and item
to subcategory with the following
schema:

<?xml version="1.0"?>
<!DOCTYPE database SYSTEM
"http://jakarta.apache.org/turbine/dtd/database.dtd";>
<!-- Created from schema.xml.all generated by JDBCToXMLSchema -->
<database>

    <table javaName="ItemCategory" name="CATEGORY">
        <column javaName="CatId" name="CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
    </table>
        <table javaName="ItemSubCategory" name="SUBCAT">
        <column javaName="CatId" name="CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
        <column javaName="SubCatId" name="SUB_CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
    </table>
    <table javaName="Item" name="ITEM">
        <column javaName="CatId" name="CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
        <column javaName="SubCatId" name="SUB_CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
        <column javaName="ItemId" name="ITEM_ID" primaryKey="true"
            required="true" size="2" type="DECIMAL"/>
        <foreign-key foreignTable="CATEGORY">
           <reference foreign="CAT_ID" local="CAT_ID"/>
        </foreign-key>
        <foreign-key foreignTable="SUBCAT">
           <reference foreign="CAT_ID" local="CAT_ID"/>
           <reference foreign="SUB_CAT_ID" local="SUB_CAT_ID"/>
        </foreign-key>
    </table>
</database>

This generates invalid code - creating two complete sets of accessors for
Items to
BaseItemSubCategory:
"List collItems;" appears twice, "Item getItems()" appears twice, etc.

However, if you swap the foreign-key definitions it works as expected (this
schema)

<?xml version="1.0"?>
<!DOCTYPE database SYSTEM
"http://jakarta.apache.org/turbine/dtd/database.dtd";>
<!-- Created from schema.xml.all generated by JDBCToXMLSchema -->
<database>

    <table javaName="ItemCategory" name="CATEGORY">
        <column javaName="CatId" name="CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
    </table>
        <table javaName="ItemSubCategory" name="SUBCAT">
        <column javaName="CatId" name="CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
        <column javaName="SubCatId" name="SUB_CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
    </table>
    <table javaName="Item" name="ITEM">
        <column javaName="CatId" name="CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
        <column javaName="SubCatId" name="SUB_CAT_ID"
            primaryKey="true" required="true" size="2" type="DECIMAL"/>
        <column javaName="ItemId" name="ITEM_ID" primaryKey="true"
            required="true" size="2" type="DECIMAL"/>
        <foreign-key foreignTable="SUBCAT">
           <reference foreign="CAT_ID" local="CAT_ID"/>
           <reference foreign="SUB_CAT_ID" local="SUB_CAT_ID"/>
        </foreign-key>
        <foreign-key foreignTable="CATEGORY">
           <reference foreign="CAT_ID" local="CAT_ID"/>
        </foreign-key>
    </table>
</database>

Also, we ran into a name conflict - having a table javaName of "Category"
will not
 work due to a getCategory in BaseItem. Problematic but we worked around it.

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to