Hi!
    I try to design a user-define collection that extends DSetImpl, because I need a 
auto-update 
set. I see the DListImpl has implemented ManageableCollection , but DSetImpl hasn't.
    I code a class PersonSet like as:
----------------------------------------------------------------------------------------
package com.dsc.nana.domain.organization;

import org.apache.ojb.odmg.collections.DSetImpl;
import org.apache.ojb.broker.ManageableCollection;
import java.util.Iterator;

public class PersonSet extends DSetImpl implements ManageableCollection{

    public PersonSet(){
        super();
    }
    public void ojbAdd(Object anObject)
    {
        super.add(anObject);
    }

    public void ojbAddAll(ManageableCollection otherCollection)
    {
        super.addAll((PersonSet) otherCollection);
    }

    public Iterator ojbIterator()
    {
        return super.iterator();
    }
}
----------------------------------------------------------------------------------------

and repository define as :
   <class-descriptor
      class="com.dsc.nana.domain.organization.Project"
      table="Project">
      <field-descriptor
         name="OID"
         column="OID"
         jdbc-type="CHAR"
         primarykey="true"
         autoincrement="true"
      /> 
      <field-descriptor
         name="name"
         column="name"
         jdbc-type="VARCHAR"
      />
      <collection-descriptor
         name="persons"
         collection-class = "com.dsc.nana.domain.organization.PersonSet"
         element-class-ref="com.dsc.nana.domain.organization.Person"
      >
         <inverse-foreignkey field-ref="containerOID"/>
      </collection-descriptor>
   </class-descriptor>

then I get error message:
16:19:44,796 INFO  [STDOUT] [org.apache.ojb.broker.accesslayer.RsIterator] ERROR:
16:19:44,812 INFO  [STDOUT] com.dsc.nana.domain.organization.PersonSet not found in 
OJB Repository
16:19:44,843 ERROR [STDERR] 
org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException: 
com.dsc.nana.domain.organization.PersonSet not found in OJB Repository
        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.singlevm.PersistenceBrokerImpl.getClassDescript 
or(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getClassDescriptor(Unknown 
Source)
        at org.apache.ojb.odmg.TransactionImpl.lock(Unknown Source)
        at org.apache.ojb.odmg.collections.DSetImpl.add(Unknown Source)
        at com.dsc.nana.domain.organization.PersonSet.ojbAdd(PersonSet.java:19)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQuery(Unknown
 Source)
        at org.apache.ojb.odmg.oql.OQLQueryImpl.execute(Unknown Source)
        at com.dsc.nana.persistence.JakartaOJBHelper.findByPrimaryKey(JakartaOJB
                                            :
                                            :

What's wrong? Dose anybody do this success?
Thanks!

Dogie Tsai


Reply via email to