How about this:

/**
 * @ojb.class table="A"
 */
class A
{
    /**
     * @ojb.field column="A_ID"
     *            nullable="false"
     *            primarykey="true"
     *            autoincrement="ojb"
     */     
    private Integer id;
    /**
     * @ojb.field column="A_NAME"
     *            length="40"
     *            nullable="false"
     */     
    private String name;
}

/**
 * @ojb.class table="B"
 */
class B
{
    /**
     * @ojb.field column="B_ID"
     *            nullable="false"
     *            primarykey="true"
     *            autoincrement="ojb"
     */     
    private Integer id;
    /**
     * @ojb.field column="B_NAME"
     *            length="40"
     *            nullable="false"
     */     
    private String name;
}

/**
 * @ojb.class table="C"
 */
class C
{
    /**
     * @ojb.field column="C_ID"
     *            nullable="false"
     *            primarykey="true"
     *            autoincrement="ojb"
     */     
    private Integer id;
    /**
     * @ojb.field column="C_NAME"
     *            length="40"
     *            nullable="false"
     */     
    private String name;
}

/**
 * @ojb.class table="A_B_REL"
 */
class AandB
{
    /**
     * @ojb.field column="A_ID"
     *            nullable="false"
     *            primarykey="true"
     */     
    private Integer aId;
    /**
     * @ojb.field column="B_ID"
     *            nullable="false"
     *            primarykey="true"
     */     
    private Integer bId;
    /**
     * @ojb.field column="DISPLAY_SEQUENCE"
     *            nullable="false"
     */     
    private Integer displaySequence;
}

/**
 * @ojb.class table="B_C_REL"
 */
class BandC
{
    /**
     * @ojb.field column="A_ID"
     *            nullable="false"
     *            primarykey="true"
     */     
    private Integer aId;
    /**
     * @ojb.field column="B_ID"
     *            nullable="false"
     *            primarykey="true"
     */     
    private Integer bId;
    /**
     * @ojb.field column="C_ID"
     *            nullable="false"
     *            primarykey="true"
     */     
    private Integer cId;
    /**
     * @ojb.field column="DISPLAY_SEQUENCE"
     *            nullable="false"
     */     
    private Integer displaySequence;
    /**
     * @ojb.reference foreignkey="aId,bId"
     */         
    private AandB theAandB;
}


The generated repository_user.xml would be:


<class-descriptor
    class="A"
    table="A"
>
    <field-descriptor
        name="id"
        column="A_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
        autoincrement="true"
    >
    </field-descriptor>
    <field-descriptor
        name="name"
        column="A_NAME"
        jdbc-type="VARCHAR"
        nullable="false"
        length="40"
    >
    </field-descriptor>
</class-descriptor>
<class-descriptor
    class="AandB"
    table="A_B_REL"
>
    <field-descriptor
        name="aId"
        column="A_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
    >
    </field-descriptor>
    <field-descriptor
        name="bId"
        column="B_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
    >
    </field-descriptor>
    <field-descriptor
        name="displaySequence"
        column="DISPLAY_SEQUENCE"
        jdbc-type="INTEGER"
        nullable="false"
    >
    </field-descriptor>
</class-descriptor>
<class-descriptor
    class="B"
    table="B"
>
    <field-descriptor
        name="id"
        column="B_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
        autoincrement="true"
    >
    </field-descriptor>
    <field-descriptor
        name="name"
        column="B_NAME"
        jdbc-type="VARCHAR"
        nullable="false"
        length="40"
    >
    </field-descriptor>
</class-descriptor>
<class-descriptor
    class="BandC"
    table="B_C_REL"
>
    <field-descriptor
        name="aId"
        column="A_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
    >
    </field-descriptor>
    <field-descriptor
        name="bId"
        column="B_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
    >
    </field-descriptor>
    <field-descriptor
        name="cId"
        column="C_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
    >
    </field-descriptor>
    <field-descriptor
        name="displaySequence"
        column="DISPLAY_SEQUENCE"
        jdbc-type="INTEGER"
        nullable="false"
    >
    </field-descriptor>
    <reference-descriptor
        name="theAandB"
        class-ref="AandB"
    >
        <foreignkey field-ref="aId"/>
        <foreignkey field-ref="bId"/>
    </reference-descriptor>
</class-descriptor>
<class-descriptor
    class="C"
    table="C"
>
    <field-descriptor
        name="id"
        column="C_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        nullable="false"
        autoincrement="true"
    >
    </field-descriptor>
    <field-descriptor
        name="name"
        column="C_NAME"
        jdbc-type="VARCHAR"
        nullable="false"
        length="40"
    >
    </field-descriptor>
</class-descriptor>


and the generated Database Schema:


<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database_3_0_1.dtd";>
<!-- Generated by the xdoclet-ojb module -->

<database name="ojb_blank">
    <table name="A">
        <column name="A_ID"
                javaName="id"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="A_NAME"
                javaName="name"
                type="VARCHAR"
                required="true"
                size="40"
        />
    </table>
    <table name="A_B_REL">
        <column name="A_ID"
                javaName="aId"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="B_ID"
                javaName="bId"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="DISPLAY_SEQUENCE"
                javaName="displaySequence"
                type="INTEGER"
                required="true"
        />
    </table>
    <table name="B">
        <column name="B_ID"
                javaName="id"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="B_NAME"
                javaName="name"
                type="VARCHAR"
                required="true"
                size="40"
        />
    </table>
    <table name="B_C_REL">
        <column name="A_ID"
                javaName="aId"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="B_ID"
                javaName="bId"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="C_ID"
                javaName="cId"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="DISPLAY_SEQUENCE"
                javaName="displaySequence"
                type="INTEGER"
                required="true"
        />
        <foreign-key foreignTable="A_B_REL">
            <reference local="A_ID" foreign="A_ID"/>
            <reference local="B_ID" foreign="B_ID"/>
        </foreign-key>
    </table>
    <table name="C">
        <column name="C_ID"
                javaName="id"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="C_NAME"
                javaName="name"
                type="VARCHAR"
                required="true"
                size="40"
        />
    </table>
</database>


Tom

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

Reply via email to