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 "ludovic.bert" <lu...@voila.fr> on 2003/07/02 10:44:42 UTC

1:n Mapping problem with Map again

Your right the problem is due to the missing autoincrement attribute, but now i had the following problem:
I think OJB try to cast in other type than DMapImpl but i don't know why and where.

[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: org.apache.ojb.odmg.collections.DMapImpl
java.lang.ClassCastException: org.apache.ojb.odmg.collections.DMapImpl
	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: org.apache.ojb.odmg.collections.DMapImpl
	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.ClassCastException: org.apache.ojb.odmg.collections.DMapImpl
	at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Unknown Source)
	... 13 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" 



> > Hi,
> > 
> > > [DEFAULT] WARN: org.apache.ojb.broker.metadata.ClassDescriptor: Could
> > not > found autoincrement attribute for class:
> > > org.apache.ojb.odmg.collections.DMapImpl
> > 
> > Do you really use the shipped repository_internal.xml file?
> > The warning says that there is no autoincrement field declared.
> > Do you mixed up different versions of OJB?
> > 
> > 
> > <class-descriptor
> >       class="org.apache.ojb.odmg.collections.DListImpl"
> >       table="OJB_DLIST"
> >    >
> >       <field-descriptor
> >          name="id"
> >          column="ID"
> >          jdbc-type="INTEGER"
> >          primarykey="true"
> >          autoincrement="true"    <===== !!!
> >       />
> > .....
> > 
> > regards,
> > Armin
> > 
> > ----- Original Message -----
> > From: "ludovic.bert" <lu...@voila.fr>
> > To: "ojb-user" <oj...@db.apache.org>
> > Sent: Wednesday, July 02, 2003 9:25 AM
> > Subject: 1:n Mapping problem with Map
> > 
> > 
> > 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.getUniqueVal
> > ue(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(NativeConstructorA
> > ccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
> > tructorAccessorImpl.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.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.PersistenceBrokerImpl.getCollectionByQuer
> > y(Unknown Source)
> > at
> > org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Un
> > known Source)
> > at
> > org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQu
> > ery(Unknown Source)
> > at
> > com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(Persistenc
> > eManager.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.getUniqueVal
> > ue(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(NativeConstructorA
> > ccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
> > tructorAccessorImpl.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.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.PersistenceBrokerImpl.getCollectionByQuer
> > y(Unknown Source)
> > at
> > org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Un
> > known Source)
> > at
> > org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQu
> > ery(Unknown Source)
> > at
> > com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(Persistenc
> > eManager.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(NativeConstructorA
> > ccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
> > tructorAccessorImpl.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.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.PersistenceBrokerImpl.getCollectionByQuer
> > y(Unknown Source)
> > at
> > org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Un
> > known Source)
> > at
> > org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQu
> > ery(Unknown Source)
> > at
> > com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(Persistenc
> > eManager.java:112)
> > at TestOjb.main(TestOjb.java:16)
> > Caused by: java.lang.NullPointerException
> > at
> > org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueVal
> > ue(Unknown Source)
> > ... 22 more
> > rethrown as org.apache.ojb.broker.PersistenceBrokerException
> > 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.PersistenceBrokerImpl.getCollectionByQuer
> > y(Unknown Source)
> > at
> > org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByQuery(Un
> > known Source)
> > at
> > org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByQu
> > ery(Unknown Source)
> > at
> > com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(Persistenc
> > eManager.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(NativeConstructorA
> > ccessorImpl.java:39)
> > at
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
> > tructorAccessorImpl.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.getCollectionByQuer
> > y(Unknown Source)
> > ... 13 more
> > Caused by: java.lang.NullPointerException
> > at
> > org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueVal
> > ue(Unknown Source)
> > ... 22 more
> > java.lang.ArrayIndexOutOfBoundsException
> > at
> > org.apache.commons.lang.exception.NestableDelegate.getThrowable(Nestable
> > Delegate.java:208)
> > at
> > org.apache.commons.lang.exception.NestableRuntimeException.getThrowable
> > (NestableRuntimeException.java:162)
> > at
> > com.mps.safari.util.dbaccess.QueryExceptionHandler.handleException(Query
> > ExceptionHandler.java:29)
> > at
> > com.mps.safari.util.dbaccess.PersistenceManager.getObjectById(Persistenc
> > eManager.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: ojb-user-unsubscribe@db.apache.org
> > For additional commands, e-mail: ojb-user-help@db.apache.org
> > 
> > 
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> > For additional commands, e-mail: ojb-user-help@db.apache.org
> > 
> > 
> ------------------------------------------
> 
> Faites un voeu et puis Voila ! www.voila.fr 
> 
> 
------------------------------------------

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