Hi Alexander,

I don't now if this will solve your problem,
but in current CVS version Identity class
(and some dependend classes) changed to
populate both
>   object real class = null;
>   pkvalues = 10;
>   object class = IBaseInterface.
objectRealClass and objectClass
(means topLevelClass).

Give it a try ;-)

regards,
Armin


----- Original Message -----
From: "Alexander Prozor" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, June 12, 2003 8:04 AM
Subject: Inheritance


> Hi Experts,
> We have object hierarchy :
> base interface IBaseInterface,
> and classes that implements it Class0, Class1, Class2
> Class0 has reference to the Class1
> in the tables for these classes we got identical value of primary
> keys. (i.e. Class1 pk = 10 and Class2 pk = 10 ).
> when we try to search for Class0 instances via ODMG OQL query.
> something like this:
>           select classes from Class0 where name = 'testClass'
> in PersistentBrokerImpl.getReferencedObject
> Ojb takes Top level Class for Class1 (
> DescriptionRepository.getTopLevelClass()).
> and Identity:
>   object real class = null;
>   pkvalues = 10;
>   object class = IBaseInterface.
>
> and trying to set Class2 object instead of Class1.
> So we got exception:
>
> java.lang.IllegalArgumentException: field type mismatch
>         at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1049)
>         at
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1027)
>         at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIt
erator.java:462)
>         at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:270)
>         at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1418)
>         at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1468)
>         at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1429)
>         at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
ery(DelegatingPersistenceBroker.java:292)
>         at
org.apache.ojb.odmg.oql.OQLQueryImpl.execute(OQLQueryImpl.java:339)
>
> How can we set real class?
> Maybe it's better to use another query ( PersistentBroker API ).
>
> --
> Best regards,
>  Alexander                            mailto:[EMAIL PROTECTED]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>



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

Reply via email to