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 Piet Molenaar <p....@amc.uva.nl> on 2005/06/08 10:40:59 UTC
Re: Inheritance on multiple tables produces base class
instances
The release notes: the one place I should have looked but did not! ;)
I hope this can be fixed in the next release otherwise I have to elaborate
on the current work-around.
All the best and thanks for the efforts,
Piet
At 10:43 PM 6/7/2005, you wrote:
>Hi Piet,
>the work-around was only a suggestion to solve the problem temporary (for
>my case, it works well).
>I think this is a known issue (see
>http://db.apache.org/ojb/release-notes.txt), that will be fixed in version
>1.0.4 (correct me if I am wrong ;-)
>
>Best regards,
>Michael
>
>Piet Molenaar schrieb:
>
>>Hi All,
>>
>>I've implemented inheritance on multiple tables and it works fine for
>>inserting data. (see code snippets below)
>>(ojb is a great initiative and its elegance saves a lot of work!)
>>However, a problem arose when I tried to query for a dao without knowing
>>beforehand which type of object I will retrieve;
>>loading a referenced object always produces base class instances.
>>
>>I've been looking around the archives and found this thread but the last
>>post mentioned a work-around by
>>storing an additional id
>>http://nagoya.apache.org/eyebrowse/BrowseList?listId=107&by=thread&from=899091
>>Is this regular behavior or am I missing something (I can imagine that
>>proxy="dynamic" does not work?)
>>
>>Thanks a lot in advance!
>>
>>Piet
>>
>>Explanation:
>>A source has a type of interaction which can be of a subtype
>>proteininteraction (in fact it is an inheritance tree of several types).
>>When querying the source with a proteininteraction for its
>>interactiontype I always get the base class InteractionTypeInterface retrieved.
>>I'm using OJB 1.0.3
>>
>>// Dao's
>>
>>public class Source
>> implements SourceInterface
>>{
>> private Integer dataid;
>> private String sourceid;
>> private InteractionTypeInterface interactiontype;
>>
>> public Source()
>> {
>> targets = new Vector();
>> interactiontype = new InteractionType();
>> datatype = new DataType();
>> origin = new Origin();
>> }
>> //getters/setters
>>}
>>
>>public class InteractionType implements InteractionTypeInterface,
>>DAOInterface
>>{
>> protected Integer interactiontypeid;
>> protected String interactioninfo;
>> //getters/setters
>>}
>>
>>public class ProteinInteractionType extends InteractionType implements
>>ProteinInteractionTypeInterface
>>{
>> protected String proteininteractioninfo;
>>
>> //getters/setters
>>}
>>
>>// Repository
>>
>> <!-- Source contains the information about the datasource -->
>> <class-descriptor
>> class="amcplugin.data.persistency.Source"
>> proxy="dynamic"
>> table="SOURCE"
>> >
>> <field-descriptor id="1"
>> name="dataid"
>> column="DATA_ID"
>> jdbc-type="INTEGER"
>> primarykey="true"
>> autoincrement="true"
>> />
>> <field-descriptor id="6"
>> name="interactiontypeid"
>> column="INTERACTION_TYPE_ID"
>> jdbc-type="INTEGER"
>> access="anonymous"
>> />
>> <reference-descriptor name="interactiontype"
>> class-ref="amcplugin.data.persistency.InteractionType"
>> auto-retrieve="true"
>> auto-update="true"
>> auto-delete="false"
>> >
>> <foreignkey field-ref="interactiontypeid"/>
>> </reference-descriptor>
>> </class-descriptor>
>>
>> <!-- InteractionType links the id to the type of Interaction -->
>> <class-descriptor
>> class="amcplugin.data.persistency.InteractionType"
>> proxy="dynamic"
>> table="INTERACTION_TYPE"
>> >
>> <field-descriptor id="1"
>> name="interactiontypeid"
>> column="INTERACTION_TYPE_ID"
>> jdbc-type="INTEGER"
>> autoincrement="true"
>> primarykey="true"
>> />
>> <field-descriptor id="2"
>> name="interactioninfo"
>> column="INTERACTION_INFO"
>> jdbc-type="VARCHAR"
>> />
>> </class-descriptor>
>>
>> <!-- ProteinInteractionInfo gives type of proteininteraction -->
>> <class-descriptor
>> class="amcplugin.data.persistency.ProteinInteractionType"
>> proxy="dynamic"
>> table="PROTEIN_INTERACTION_TYPE"
>> >
>> <field-descriptor id="1"
>> name="interactiontypeid"
>> column="INTERACTION_TYPE_ID"
>> jdbc-type="INTEGER"
>> autoincrement="true"
>> primarykey="true"
>> />
>> <field-descriptor id="2"
>> name="proteininteractioninfo"
>> column="PROTEIN_INTERACTION_INFO"
>> jdbc-type="VARCHAR"
>> />
>> <reference-descriptor name="super"
>> class-ref="amcplugin.data.persistency.InteractionType"
>> auto-retrieve="true"
>> auto-update="true"
>> auto-delete="object"
>> >
>> <foreignkey field-ref="interactiontypeid"/>
>> </reference-descriptor>
>> </class-descriptor>
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>>For additional commands, e-mail: ojb-user-help@db.apache.org
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>For additional commands, e-mail: ojb-user-help@db.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org