Hi!
Short description of the problem:
making field "proxy" causes exception when loading an object.
I need advice on following situation:
There are 4 types of objects:
User, mapped to table "user"
System, mapped to table "stored_object"
Client, mapped to table "stored_object"
Reseller, mapped to table "stored_object"
3 last objects are mapped to one table, because User has field called
"parent", and the parent can be of one of the 3 types.
For using proxy, they all implement their interface.
UserImpl implements User,
StoredObject implements StoredObjectInterf,
SystemImpl extends StoredObject,implements System,
ClientImpl extends StoredObject,implements Client,
ResellerImpl extends StoredObject,implements Reseller,
Mapping:
<class-descriptor class="User">
<extent-class class-ref="UserImpl" />
</class-descriptor>
<class-descriptor class="System">
<extent-class class-ref="SystemImpl" />
</class-descriptor>
<class-descriptor class="Reseller">
<extent-class class-ref="ResellerImpl" />
</class-descriptor>
<class-descriptor class="Client">
<extent-class class-ref="ClientImpl" />
</class-descriptor>
<class-descriptor class="StoredObjectInterf">
<extent-class class-ref="StoredObject" />
<extent-class class-ref="SystemImpl" />
<extent-class class-ref="ClientImpl" />
<extent-class class-ref="ResellerImpl" />
</class-descriptor>
<class-descriptor class="StoredObject">
<extent-class class-ref="SystemImpl" />
<extent-class class-ref="ClientImpl" />
<extent-class class-ref="ResellerImpl" />
</class-descriptor>
<class-descriptor class="UserImpl" proxy="dynamic" table="user">
<field-descriptor id="1" name="id" column="id" jdbc-type="INTEGER"
primarykey="true" autoincrement="true"/>
<field-descriptor id="2" name="parentId" column="parent_id" jdbc-type="INTEGER"/>
<reference-descriptor name="parent"
>>>>>proxy="true"<<<<!!!Attention, critical place!
class-ref="StoredObject">
<foreignkey field-id-ref="2"/>
</reference-descriptor>
</class-descriptor>
=============================================================================================
My object of type UserImpl has parent of type SystemImpl.
The problem is:
When I load UserImpl without using proxy for "parent" field, it's OK
When I load object by Identity , I see an exception:
I know, that it occures, when trying to call BSUserImpl.setParent(
Proxy ) ,
java.lang.IllegalArgumentException: field type mismatch
at java.lang.reflect.Field.set(Native Method)
at
org.apache.ojb.broker.metadata.PersistentFieldDefaultImpl.set(PersistentFieldDefaultImpl.java:146)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:878)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(PersistenceBrokerImpl.java:851)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1479)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1562)
Maybe I do something wrong?
Or you can explain, how to handle this object scheme correctly in
theory? I read all the documentation and made mapping according to it.
--
Best regards,
Andrey mailto:[EMAIL PROTECTED]
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>