Hi Armin:
Because I deploy OJB to JBoss, my application must run on JBoss. Its
test case must also deployed to JBoss.
I can post the two simple class ,Person and Project calss, if these are
useless to debug. It doesn't matter. I will give this solution.
<!-------------------------------------------------------------Person
class----------------------------------------------------->
package com.dsc.nana.domain.organization;
import java.util.*;
public class Person{
private String OID;
public String getOID(){
this.OID;
}
public void setOID(String pNewValue){
this.OID= pNewValue;
}
/** name of person*/
private String name = null;
/** name's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public String getName() {
return this.name;
}
/** name's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setName(String pNewValue) {
this.name = pNewValue;
}
/** OID of the project that person join */
private String containerOID = null;
/** containOID's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public String getContainerOID() {
return this.containerOID;
}
/** containOID's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setContainerOID(String pNewValue) {
this.containerOID = pNewValue;
}
/** the project that person join */
private Project container = null;
/** container's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public Project getContainer() {
return this.container;
}
/** container's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setContainer(Project pNewValue) {
this.container = pNewValue;
pNewValue.addPerson(this);
}
public Person() {
}
}
<!-----------------------------------------Project--------------------------
------------------------->
package com.dsc.nana.domain.organization;
import com.dsc.nana.persistence.PersistentObject;
import java.util.*;
import org.odmg.DMap;
import org.apache.ojb.odmg.collections.DMapImpl;
public class Project{
private String OID;
public String getOID(){
this.OID;
}
public void setOID(String pNewValue){
this.OID= pNewValue;
}
private String name = null;
/** name's getter
* @author Dogie Tsai
* @since 2002/10/22
*/
public String getName() {
return this.name;
}
/** name's setter
* @author Dogie Tsai
* @since 2002/10/22
*/
public void setName(String pNewValue) {
this.name = pNewValue;
}
private DMap persons;
public DMap getPersons(){
if (this.persons == null){
this.persons = new PersonMap ();
}
return this.persons ;
}
public void setPersons(DMap pNewValue){
this.persons = pNewValue;
}
public void addPerson(Person pMember){
if (this.getPersons().containsValue(pMember)){
} else {
this.getPersons().put(pMember.getOID() ,pMember);
pMember.setContainer(this);
}
}
public Project() {
}
}
I just new a project and a person.The Person add in the project. Then store
project.
> Hi Dougie,
>
> sorry I don't have a clue what's going wrong.
> Could you post a test case?
>
> regards,
> Armin
>
> ----- Original Message -----
> From: "���զ�" <[EMAIL PROTECTED]>
> To: "OJB Users List" <[EMAIL PROTECTED]>
> Sent: Monday, March 31, 2003 5:33 AM
> Subject: DMapImpl how to implement ManageableCollection ?
>
>
> Hi Armin:
> I try to implement ManageableCollection via DMapImpl,but it can't
> work.
> I don't know what's worng with it. I design a PersonMap class that
> extends DMapImpl and implement ManageableCollection, as like:
> package com.dsc.nana.domain.organization;
>
> import org.apache.ojb.odmg.collections.DMapImpl;
> import org.apache.ojb.broker.ManageableCollection;
> import java.util.Iterator;
> import com.dsc.nana.persistence.PersistentObject;
>
> public class PersonMap extends DMapImpl implements ManageableCollection{
>
> public PersonMap() {
> super();
> }
>
> public void ojbAdd(Object anObject)
> {
> super.getEntries().add(anObject);
> }
>
> public void ojbAddAll(ManageableCollection otherCollection)
> {
> super.putAll((PersonMap) otherCollection);
> }
>
> public Iterator ojbIterator()
> {
> return super.values().iterator();
> }
> }
>
> And I declare the PersonMap class in repository as :
>
> <class-descriptor
> class="com.dsc.nana.domain.organization.PersonMap"
> table="OJB_DMAP"
> >
> <field-descriptor
> name="id"
> column="ID"
> jdbc-type="INTEGER"
> primarykey="true"
> autoincrement="true"
> />
> <field-descriptor
> name="size"
> column="SIZE_"
> jdbc-type="INTEGER"
> />
> <collection-descriptor
> name="entries"
> element-class-ref="org.apache.ojb.odmg.collections.DMapEntry"
>
> collection-class="org.apache.ojb.broker.util.collections.ManageableHashS
> et"
> >
> <inverse-foreignkey field-ref="dmapId"/>
> </collection-descriptor>
> </class-descriptor>
>
> Then I get error messages as :
>
> 11:21:57,906 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
> INFO:
> 11:21:57,921 INFO [STDOUT] Init NamingLocator
> 11:21:57,921 INFO [STDOUT] [org.apache.ojb.broker.ta.NamingLocator]
> INFO:
> 11:21:57,937 INFO [STDOUT] Properties for creating the initial context:
> null
> 11:21:58,453 INFO [STDOUT] [org.apache.ojb.odmg.TransactionImpl] ERROR:
> 11:21:58,453 INFO [STDOUT] Locking obj
> [EMAIL PROTECTED] with lock mode 1 failed
> 11:21:58,484 INFO [STDOUT] com.dsc.nana.domain.organization.Person
> 11:21:58,484 ERROR [STDERR] java.lang.ClassCastException:
> com.dsc.nana.domain.organization.Person
> 11:21:58,500 ERROR [STDERR] at
> java.util.AbstractMap$4.next(AbstractMap.java:435)
> 11:21:58,515 ERROR [STDERR] at
> org.apache.ojb.odmg.TransactionImpl.lockCollections(Unknown Source)
> 11:21:58,531 ERROR [STDERR] at
> org.apache.ojb.odmg.TransactionImpl.register(Unknown Source)
> 11:21:58,546 ERROR [STDERR] at
> org.apache.ojb.odmg.TransactionImpl.lock(Unknown Source)
> 11:21:58,578 ERROR [STDERR] at
> org.apache.ojb.odmg.oql.OQLQueryImpl.performLockingIfRequired(Unknown
> Source)
> 11:21:58,593 ERROR [STDERR] at
> org.apache.ojb.odmg.oql.OQLQueryImpl.execute(Unknown Source)
> 11:21:58,609 ERROR [STDERR] at
> com.dsc.nana.persistence.JakartaOJBHelper.findByPrimaryKey(JakartaOJBHel
> per.java:102)
> 11:21:58,625 ERROR [STDERR] at
> com.dsc.nana.persistence.PersistentObjectHelper.findByPrimaryKey(Persist
> entObjectHelper.java:67)
> 11:21:58,640 ERROR [STDERR] at
> com.dsc.nana.control.TestObjectBean.createPer
>
> Could you help me ?
> Thanks advance.
>
> Dogie Tsai
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]