OJB not returning the correct child types.

"Virgo Smart" <[email protected]>
Newsgroups gmane.comp.jakarta.ojb.user
Message-ID <[email protected]>
Hello,

I am facing an issue when trying to retrieve the Drawer object.
Instead of retrieving a collection of Toy and Book instances in the stuffInDrawer attribute, collection containing Thing instances is returned.

Following is the class descriptor that is used.

<class-descriptor
    class="Thing"
    table="THINGS">

   <extent-class class-ref="Toy"/>
   <extent-class class-ref="Book"/>

    <field-descriptor
        name="id"
        column="ID"
        jdbc-type="INTEGER"
        primarykey="true"
        autoincrement="true"
        />

    <field-descriptor
        name="name"
        column="NAME"
        jdbc-type="VARCHAR"
        size="255"
        />

    <field-descriptor
        name="drawerId"
        column="DRAWER_ID"
        jdbc-type="INTEGER"
        access="anonymous"
        />

</class-descriptor>

<class-descriptor
    class="Toy"
    table="TOYS">

    <field-descriptor
        name="id"
        column="ID"
        jdbc-type="INTEGER"
        primarykey="true"
        autoincrement="true"
        />

    <field-descriptor
        name="category"
        column="CATEGORY"
        jdbc-type="VARCHAR"
        size="255"
        />

    <field-descriptor
        name="parentThingId"
        column="THING_ID"
        jdbc-type="BIGINT"
        access="anonymous"
    >
    </field-descriptor>

    <reference-descriptor
        name="super"
        class-ref="Thing"
    >
        <foreignkey field-ref="parentThingId"/>
    </reference-descriptor>

</class-descriptor>

<class-descriptor
    class="Book"
    table="BOOKS">

    <field-descriptor
        name="id"
        column="ID"
        jdbc-type="INTEGER"
        primarykey="true"
        autoincrement="true"
        />

    <field-descriptor
        name="author"
        column="AUTHOR"
        jdbc-type="VARCHAR"
        size="255"
        />

    <field-descriptor
        name="isbnCode"
        column="ISBN_CODE"
        jdbc-type="VARCHAR"
        size="255"
        />

    <field-descriptor
        name="parentThingId"
        column="THING_ID"
        jdbc-type="BIGINT"
        access="anonymous"
    >
    </field-descriptor>

    <reference-descriptor
        name="super"
        class-ref="Thing"
    >
        <foreignkey field-ref="parentThingId"/>
    </reference-descriptor>

</class-descriptor>


<class-descriptor
    class="Drawer"
    table="DRAWER">

    <field-descriptor
        name="id"
        column="id"
        jdbc-type="INTEGER"
        primarykey="true"
        autoincrement="true"
        />
    
    <collection-descriptor
        name="stuffInDrawer"
        element-class-ref="Thing"
        >
        <inverse-foreignkey field-ref="drawerId"/>
    </collection-descriptor>
</class-descriptor>


I have used the table per subclass hierarchy strategy.
I have used SequenceManagerHighLowImpl as the sequence manager. The ids (ID column) in the TOYS and BOOKS tables are unique when the Drawer object is stored. In the sense, when a Drawer containing 3 things (2 books and 1 toy) is stored, the ids stored in THINGS table are 1, 2, and 3, where as the ids stored in BOOKS table are 1 and 2 and id stored in the TOYS table is 3.

I hope I have provided sufficient details to debug the issue. Could anyone please point me as to where am I going wrong or if there is any way to circumvent the problem ?
 
Thanks and Regards,
Gautam.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.