Hi Dogie,
you have to declare class PersonSet in
repository too. Take a look in repository_internal.xml
regards,
Armin
----- Original Message -----
From: "���զ�" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Sent: Friday, March 28, 2003 9:32 AM
Subject: DSetImpl how to implement ManageableCollection ?
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(Unk
nown Source)
at
org.apache.ojb.broker.metadata.DescriptorRepository.getDescriptorFor(Unk
nown Source)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getClassDescript
or(Unknown Source)
at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getClassDescr
iptor(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.getCollectionByQuer
y(Unknown Source)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer
y(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(Unkn
own Source)
at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
Source)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer
y(Unknown Source)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer
y(Unknown Source)
at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuer
y(Unknown Source)
at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollection
ByQuery(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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]