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