Hello all,

I want to have a 1:n mapping with a HashMap, but i have the following problem:

    - Firstly i defined my classes like this:

public class Client {

        protected Long id = null;
        protected String nom = "";
        protected HashMap contacts = null;

        public Client() {
                super();
                this.contacts = new HashMap();
        }

                     // getters and setters.
}

public class Contact {
        
        private Long id = null;
        private long codeClient = 0;
        private String code = "";
        private String nom = "";
        private String titre = "";
        private String telephone = "";
        private String fax = "";
        private String eMail = "";
        private String service = "";
        private String unite = "";

        public Contact() {
                super();
        }
        // getters and setters
}

    - Secondly i defined the OJB mapping like this:
   <!-- Definitions for com.mps.safari.commun.Client -->
   <class-descriptor class="com.mps.safari.commun.Client" table="client">
      <field-descriptor id="1" name="id" column="CLIENT_ID" jdbc-type="BIGINT" 
primarykey="true" autoincrement="true"/>
      <field-descriptor id="2" name="nom" column="NOM" jdbc-type="VARCHAR"/>
      <collection-descriptor name="contacts" 
collection-class="org.apache.ojb.odmg.collections.DMapImpl" element-class-
ref="com.mps.safari.commun.Contact" auto-update="true" auto-delete="true">
        <inverse-foreignkey field-ref="codeClient"/>
      </collection-descriptor>
   </class-descriptor>

   <!-- Definitions for com.mps.safari.commun.Contact -->
   <class-descriptor class="com.mps.safari.commun.Contact" table="contact">
        <field-descriptor id="1" name="id" column="CONTACT_ID" jdbc-type="BIGINT" 
primarykey="true" 
autoincrement="true"/>
        <field-descriptor id="2" name="codeSociete" column="CODE_SOCIETE" 
jdbc-type="BIGINT"/>
    <field-descriptor id="3" name="codeClient" column="CODE_CLIENT" 
jdbc-type="BIGINT"/>
    <field-descriptor id="4" name="code" column="CODE" jdbc-type="VARCHAR"/>
    <field-descriptor id="5" name="nom" column="NOM" jdbc-type="VARCHAR"/>
    <field-descriptor id="6" name="titre" column="TITRE" jdbc-type="VARCHAR"/>
    <field-descriptor id="7" name="telephone" column="TELEPHONE" jdbc-type="VARCHAR"/>
    <field-descriptor id="8" name="fax" column="FAX" jdbc-type="VARCHAR"/>
    <field-descriptor id="9" name="eMail" column="EMAIL" jdbc-type="VARCHAR"/>
    <field-descriptor id="10" name="service" column="SERVICE" jdbc-type="VARCHAR"/>
    <field-descriptor id="11" name="unite" column="UNITE" jdbc-type="VARCHAR"/>
   </class-descriptor>

   - Finally when i get a Client i have the following error message : 
[DEFAULT] WARN: org.apache.ojb.broker.metadata.ClassDescriptor: Could not found 
autoincrement attribute for class: 
org.apache.ojb.odmg.collections.DMapImpl
[DEFAULT] ERROR: DMapImpl: Generation of new id failed
null
java.lang.NullPointerException
        at 
org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(Unknown 
Source)
        at org.apache.ojb.odmg.collections.DMapImpl.generateNewId(Unknown Source)
        at org.apache.ojb.odmg.collections.DMapImpl.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at java.lang.Class.newInstance0(Class.java:296)
        at java.lang.Class.newInstance(Class.java:249)
        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.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
Source)
        at 
com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(PersistenceManager.java:112)
        at TestOjb.main(TestOjb.java:16)
[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: null
java.lang.NullPointerException
        at 
org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(Unknown 
Source)
        at org.apache.ojb.odmg.collections.DMapImpl.generateNewId(Unknown Source)
        at org.apache.ojb.odmg.collections.DMapImpl.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at java.lang.Class.newInstance0(Class.java:296)
        at java.lang.Class.newInstance(Class.java:249)
        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.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
Source)
        at 
com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(PersistenceManager.java:112)
        at TestOjb.main(TestOjb.java:16)
rethrown as org.apache.ojb.broker.PersistenceBrokerException
        at org.apache.ojb.odmg.collections.DMapImpl.generateNewId(Unknown Source)
        at org.apache.ojb.odmg.collections.DMapImpl.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at java.lang.Class.newInstance0(Class.java:296)
        at java.lang.Class.newInstance(Class.java:249)
        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.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
Source)
        at 
com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(PersistenceManager.java:112)
        at TestOjb.main(TestOjb.java:16)
Caused by: java.lang.NullPointerException
        at 
org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(Unknown 
Source)
        ... 22 more
rethrown as org.apache.ojb.broker.PersistenceBrokerException
        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.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Unknown Source)
        at 
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
Source)
        at 
com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(PersistenceManager.java:112)
        at TestOjb.main(TestOjb.java:16)
Caused by: org.apache.ojb.broker.PersistenceBrokerException
        at org.apache.ojb.odmg.collections.DMapImpl.generateNewId(Unknown Source)
        at org.apache.ojb.odmg.collections.DMapImpl.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at java.lang.Class.newInstance0(Class.java:296)
        at java.lang.Class.newInstance(Class.java:249)
        at 
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown 
Source)
        ... 13 more
Caused by: java.lang.NullPointerException
        at 
org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(Unknown 
Source)
        ... 22 more
java.lang.ArrayIndexOutOfBoundsException
        at 
org.apache.commons.lang.exception.NestableDelegate.getThrowable(NestableDelegate.java:208)
        at org.apache.commons.lang.exception.NestableRuntimeException.getThrowable
(NestableRuntimeException.java:162)
        at 
com.mps.safari.util.dbaccess.QueryExceptionHandler.handleException(QueryExceptionHandler.java:29)
        at 
com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(PersistenceManager.java:116)
        at TestOjb.main(TestOjb.java:16)
Exception in thread "main"

It's the first time i use OJB so i would like to know how to do a 1:n mapping using 
HashMap and if it is possible.

Thanks for your help.

------------------------------------------

Faites un voeu et puis Voila ! www.voila.fr 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to