Hi Christophe,

You have to define the inheritance relationship the other way round. You have to define PersonBaseImpl as an abstract class and add an extent-class pointer to ST_Person.

As in the following example:

   <class-descriptor
     class="demo1.PersonBaseImpl"
   >
      <extent-class class-ref="demo1.ST_Person" />
   </class-descriptor>

   <class-descriptor
     class="demo1.ST_Person"
     table="PERSON"
   >
...

cheers,
Thomas

Christophe.Demarey wrote:
Hi,

I have a persistent class (contains all persistent fields) ST_Person.
I have a base implementation (implements business methods) PersonBaseImpl that inherits from ST_Person.


I wrote in the repository an extent tag for this but I don't wrote a tag for PersonBaseImpl. I think this was the problem.
Must we declare such a class ?


I do this but I get the following error.
Is something missing in my code ?
What I'm doing wrong?

Best Regards.

----------------
java.lang.NullPointerException
at org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.getIdentityFromResultSet(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
at com.sun.jdori.common.query.BasicQueryResult.<init>(Unknown Source)
at org.apache.ojb.jdori.sql.OjbStoreManager.newQueryResult(Unknown Source)
at com.sun.jdori.common.query.QueryImpl.executeWithArray(Unknown Source)
at ....
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: null
java.lang.NullPointerException
at org.apache.ojb.broker.metadata.ClassDescriptor.getPkFields(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.getIdentityFromResultSet(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
at com.sun.jdori.common.query.BasicQueryResult.<init>(Unknown Source)
at org.apache.ojb.jdori.sql.OjbStoreManager.newQueryResult(Unknown Source)
at com.sun.jdori.common.query.QueryImpl.executeWithArray(Unknown Source)
at ....




Danilo Tommasina wrote:

Please post your repository.xml descriptor, it seems that you have a loop in your config.

bye
danilo

Hi,

I didn't have any feedback about my last mail and I don't know how to solve this problem.

As I'm not sure JDO queries work fine, I test the following piece of code. But I always got a "java.lang.StackOverflowError" exception.
( Before this query, classes were enhanced with a jdo file - I want to use the OJB JDO api).



I really need to run OJB queries. Can anyone help me?


Thanks,
Christophe.


My code : ==========

        // Get an OJB Broker
        org.apache.ojb.broker.PersistenceBroker broker = null;
        try
        {
            broker = org.apache.ojb.broker.PersistenceBrokerFactory.
                        defaultPersistenceBroker();
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }

        // Create the OJB query
        org.apache.ojb.broker.query.Query q = null;
        org.apache.ojb.broker.query.Criteria crit = null;
        java.util.Collection results = null;


crit = new org.apache.ojb.broker.query.Criteria(); crit.addEqualTo("_firstName_state", first_name); crit.addEqualTo("_lastName_state", last_name);

org.apache.ojb.broker.query.QueryFactory.newQuery(demo1.ST_Person.class,crit);

        try
        {
            // ask the broker to retrieve the Extent collection
            results = broker.getCollectionByQuery(q);
            // now iterate over the result
            java.util.Iterator iter = results.iterator();
            while (iter.hasNext())
            {
                System.out.println(iter.next());
            }
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }

The error output :
==================
java.lang.StackOverflowError
at org.apache.ojb.broker.metadata.DescriptorRepository.discoverDescriptor(Unknown Source)
at org.apache.ojb.broker.metadata.DescriptorRepository.getDescriptorFor(Unknown Source)
at org.apache.ojb.broker.metadata.DescriptorRepository.getDescriptorFor(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
at org.apache.ojb.broker.query.QueryFactory.getExtentClasses(Unknown Source)
....











------------------------------------------------------------------------

<!-- Please keep user defined mappings in this file only
     to avoid mixing user defined and system mappings. -->
<!-- Mapping of User defined classes starts here -->

   <class-descriptor
     class="demo1.ST_Address"
     table="ADDRESS"
   >
      <field-descriptor
         name="_addressLine1_state"
         column="ADR1"
         jdbc-type="VARCHAR"
         primarykey="true"
      />
      <field-descriptor
         name="_addressLine2_state"
         column="ADR2"
         jdbc-type="VARCHAR"
      />
      <field-descriptor
         name="_city_state"
         column="CITY"
         jdbc-type="VARCHAR"
      />
      <field-descriptor
         name="_zip_state"
         column="ZIP"
         jdbc-type="VARCHAR"
      />
      <field-descriptor
         name="_sh_rid"
         column="SH_RID"
         jdbc-type="VARCHAR"
      />
   </class-descriptor>


<class-descriptor class="demo1.PersonBaseImpl" table="PERSON" > </class-descriptor>

   <class-descriptor
     class="demo1.ST_Person"
     table="PERSON"
   >
      <extent-class class-ref="demo1.PersonBaseImpl" />
      <field-descriptor
         name="_firstName_state"
         column="FIRST_NAME"
         jdbc-type="VARCHAR"
         primarykey="true"
      />
      <field-descriptor
         name="_lastName_state"
         column="LAST_NAME"
         jdbc-type="VARCHAR"
         primarykey="true"
      />
      <field-descriptor
         name="_age_state"
         column="AGE"
         jdbc-type="INTEGER"
      />
      <field-descriptor
         name="_adress_state"
         column="ADDRESS"
         jdbc-type="VARBINARY"
      />
      <field-descriptor
         name="_sh_rid"
         column="SH_RID"
         jdbc-type="VARCHAR"
      />
   </class-descriptor>

<!-- Mapping of User defined classes ends here -->


------------------------------------------------------------------------


---------------------------------------------------------------------
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