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(PersistenceBrokerImpl.java:1049)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.retrieveReferences(PersistenceBrokerImpl.java:1027)
        at 
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterator.java:462)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:270)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1418)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1468)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1429)
        at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(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]

Reply via email to