You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by 蔡博至 <Do...@dsc.com.tw> on 2003/03/28 09:32:10 UTC
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(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
Re: DSetImpl how to implement ManageableCollection ?
Posted by Armin Waibel <ar...@code-au-lait.de>.
Hi Dogie,
you have to declare class PersonSet in
repository too. Take a look in repository_internal.xml
regards,
Armin
----- Original Message -----
From: "蔡博至" <Do...@dsc.com.tw>
To: "OJB Users List" <oj...@db.apache.org>
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