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
|