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