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]