Hi,

another problem:

given is an abstract base class A with many implementations A1Impl, A2Impl, A3Impl.
The base class references a second class B.

When running xdoclet, it generates an xml schema file with
as many foreign key references as there are implementations plus the one from the base class.

Any hints?

Bernd


A.java:
------------ snip ----------
/*
 * Package:
 * File:    A.java
 * Created: 10.11.2005
 * Author:  blh
 *
 */
/**
 * @ojb.class table="A_TABLE" documentation="test table"
 *
 */
public abstract class A {
  /**
* @ojb.field column="A_ID" jdbc-type="INTEGER" primarykey="true" autoincrement="ojb"
   */
  protected int                            id;
  /**
   * @ojb.field column="B_CODE" jdbc-type="INTEGER"
   */
  protected int     bId;
  /**
   * @ojb.reference class-ref="B" foreignkey="bId"
   */
  protected B            b;
}
------------ snip ----------

B.java:
------------ snip ----------
/*
 * Package:
 * File:    B.java
 * Created: 10.11.2005
 * Author:  blh
 *
 */
/**
 * @ojb.class table="B_TABLE" documentation="test table"
 *
 */
public abstract class B {
  /**
* @ojb.field column="B_ID" jdbc-type="INTEGER" primarykey="true" autoincrement="ojb"
   */
  protected int                            id;
}
------------ snip ----------

A1Impl.java, A2Impl.java, A3Impl.java:
------------ snip ----------
/*
 * Package:
 * File:    A1Impl.java
 * Created: 10.11.2005
 * Author:  blh
 *
 */
/**
 * @ojb.class table="A_TABLE" documentation="test table"
 *
 */
public class A1Impl extends A {
}
------------ snip ----------

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

<database name="test">
    <table name="A_TABLE" description="test table">
        <column name="A_ID"
                javaName="id"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
        <column name="B_CODE"
                javaName="bId"
                type="INTEGER"
        />
        <foreign-key foreignTable="B_TABLE">
            <reference local="B_CODE" foreign="B_ID"/>
        </foreign-key>
        <foreign-key foreignTable="B_TABLE">
            <reference local="B_CODE" foreign="B_ID"/>
        </foreign-key>
        <foreign-key foreignTable="B_TABLE">
            <reference local="B_CODE" foreign="B_ID"/>
        </foreign-key>
        <foreign-key foreignTable="B_TABLE">
            <reference local="B_CODE" foreign="B_ID"/>
        </foreign-key>
    </table>
    <table name="B_TABLE" description="test table">
        <column name="B_ID"
                javaName="id"
                type="INTEGER"
                primaryKey="true"
                required="true"
        />
    </table>
</database>
------------ snip ----------

test-schema.sql:
------------ snip ----------
-----------------------------------------------------------------------------
-- A_TABLE
-----------------------------------------------------------------------------
drop table A_TABLE if exists;

CREATE TABLE A_TABLE
(
            A_ID integer,
            B_CODE integer,
    PRIMARY KEY(A_ID)
);


-----------------------------------------------------------------------------
-- B_TABLE
-----------------------------------------------------------------------------
drop table B_TABLE if exists;

CREATE TABLE B_TABLE
(
            B_ID integer,
    PRIMARY KEY(B_ID)
);


    ALTER TABLE A_TABLE
        ADD CONSTRAINT A_TABLE_FK_1 FOREIGN KEY (B_CODE)
            REFERENCES B_TABLE (B_ID)
;
    ALTER TABLE A_TABLE
        ADD CONSTRAINT A_TABLE_FK_2 FOREIGN KEY (B_CODE)
            REFERENCES B_TABLE (B_ID)
;
    ALTER TABLE A_TABLE
        ADD CONSTRAINT A_TABLE_FK_3 FOREIGN KEY (B_CODE)
            REFERENCES B_TABLE (B_ID)
;
    ALTER TABLE A_TABLE
        ADD CONSTRAINT A_TABLE_FK_4 FOREIGN KEY (B_CODE)
            REFERENCES B_TABLE (B_ID)
;

------------ snip ----------


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

Reply via email to