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 Armin Waibel <ar...@apache.org> on 2005/09/14 15:27:50 UTC
Re: ArrayIndexOutOfBoundsException Exception
Hi Samuel,
maybe there is an issue with your mapping metadata (you don't post the
whole metadata related to your m:n relations, so I can't review it).
If you use a composed primary key (by specifying more than one PK field)
in class-descriptor, the indirection table has to reflect the composed
PK(if the "left" class has 3 PK fields, "right" class has 2 PK fields,
the indirection table has to reflect all PK's in 3+2 columns).
An example using composed PK with m:n relation can be found in OJB
test-suite, the mapping can be found in repository_reference.xml
class-descriptor for org.apache.ojb.broker.M2NTest$MovieImpl
http://cvs.apache.org/viewcvs.cgi/db-ojb/src/test/org/apache/ojb/repository_junit_reference.xml?rev=1.17.2.5&view=markup
Could this be the issue?
regards,
Armin
Gru Samuel wrote:
> Hi,
>
> Last month, i had no aswer, so i already send my pb. ;-)
>
> Please help me.
> Thanks
>
> Samuel
>
>
>
> -----Message d'origine-----
> De : Gru Samuel [mailto:Samuel.Gru@ouest-france.fr]
> Envoyé : vendredi 26 août 2005 10:45
> À : Liste Ojb (E-mail)
> Objet : ArrayIndexOutOfBoundsException Exception
>
>
> Hi,
>
> We want to use the ojb 1.0.3 (actually, we have the 1.0.rc5 version)
> When i use this version, i have an ArrayIndexOutOfBoundsException exception.
>
> my descriptors are :
> <class-descriptor class="fr.ouestfrance.xxx.ProcedureServeur" table="proc">
> ....
> <collection-descriptor
> name="_Fonctions"
>
> element-class-ref="fr.ouestfrance.xxx.FonctionParametreServeur"
> auto-retrieve="true"
> auto-update="true"
> auto-delete="true"
> orderby="nb_ordre" sort="ASC"
> indirection-table="procedurefonction"
> >
> <fk-pointing-to-this-class column="id_proc"/>
> <fk-pointing-to-element-class
> column="id_fonctionparametree"/>
> </collection-descriptor>
> </class-descriptor>
>
> <class-descriptor
> class="fr.ouestfrance.xxx.FonctionParametreServeur"
> table="fonctionparametree">
> <field-descriptor name="_Id" column="id_fonctionparametree"
> jdbc-type="numeric" primarykey="true" autoincrement="true" access="readonly"
> />
> ....
> <collection-descriptor name="_Parametres"
> element-class-ref="ParametreValoriseServeur"
> auto-update="true"
> auto-delete="true"
> auto-retrieve="true"
> orderby="nb_ordre" sort="ASC"
> indirection-table="fonctionparametrevalorise">
> <fk-pointing-to-this-class column="id_fonctionparametree"/>
> <fk-pointing-to-element-class column="id_parametrevalorise"/>
> </collection-descriptor>
> <reference-descriptor name="_FonctionInstanciee"
> class-ref="fr.ouestfrance.xxx.FonctionServeur"
> auto-retrieve="true"
> auto-update="false"
> auto-delete="false">
> <foreignkey field-ref="_FonctionInstanciee::_Id" />
> </reference-descriptor>
> </class-descriptor>
> <class-descriptor
> class="fr.ouestfrance.xxx.ParametreValoriseServeur"
> table="parametrevalorise">
> <field-descriptor name="_Id" column="id_parametrevalorise"
> jdbc-type="numeric" primarykey="true"
> autoincrement="true" access="readonly"/>
> ...
> </class-descriptor>
>
> java.lang.ArrayIndexOutOfBoundsException: 2
> at
> org.apache.ojb.broker.accesslayer.MtoNCollectionPrefetcher.buildMtoNImplemen
> torQuery(Unknown Source)
> at
> org.apache.ojb.broker.accesslayer.MtoNCollectionPrefetcher.buildMtoNImplemen
> torQueries(Unknown Source)
> at
> org.apache.ojb.broker.accesslayer.MtoNCollectionPrefetcher.prefetchRelations
> hip(Unknown Source)
> at
> org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Unknow
> n Source)
> at
> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown
> Source)
> at
> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown
> Source)
> at
> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown
> Source)
> at
> org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknow
> n Source)
> at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
> Unknown Source)
> at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(
> Unknown Source)
> ....
>
> Can you explain me where the error is in my descriptor ?
>
>
> When i read the src of the class, i see :
>
>> String[] indFkCols = getFksToThisClass();
>> String[] indItemFkCols = getFksToItemClass();
>> FieldDescriptor[] pkFields =
>
> getOwnerClassDescriptor().getPkFields();
>
>> FieldDescriptor[] itemPkFields =
>
> getItemClassDescriptor().getPkFields();
>
>> String[] cols = new String[indFkCols.length +
>
> indItemFkCols.length];
>
>> int[] jdbcTypes = new int[indFkCols.length + indItemFkCols.length];
>
> Do you think the last line is correct ?
> Why it isnt "int[] jdbcTypes = new int[pkFields .length + itemPkFields
> .length];" ?
>
> Thanks,
>
> Samuel
> ----------------------------------------------------------------------------
> --------------
> Les informations ou pièces jointes contenues dans ce message sont
> confidentielles. Seul le destinataire expressément visé peut en prendre
> connaissance. Toute autre personne qui en divulguera, diffusera ou prendra
> des copies sera passible de poursuites. La société Ouest-France décline en
> outre, toute responsabilité de quelque nature que ce soit au titre de ce
> message s'il a été altéré, déformé ou falsifié.
> ----------------------------------------------------------------------------
> --------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
> ----------------------------------------------------------------------------
> --------------
> Les informations ou pièces jointes contenues dans ce message sont
> confidentielles. Seul le destinataire expressément visé peut en prendre
> connaissance. Toute autre personne qui en divulguera, diffusera ou prendra
> des copies sera passible de poursuites. La société Ouest-France décline en
> outre, toute responsabilité de quelque nature que ce soit au titre de ce
> message s'il a été altéré, déformé ou falsifié.
> ----------------------------------------------------------------------------
> --------------
>
> ---------------------------------------------------------------------
> 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