mardi 28 décembre 2010

IndexOutOfRangeException: Index xx non valide - Nhibernate

Bonjour,

La gestion de Nhibernate est très complexe ... et je me permet de noter l'erreur suivante qui intervient lors d'un Update :

System.IndexOutOfRangeException: Index 29 non valide pour ce OracleParameterCollection avec Count=29

C'est erreur est lié a la mise a jour de trop de champs (champs en doublons dans le fichier hbm.xml : mapping de Nhibernate). C'est souvent le cas lorsque vous avez un many-to-one pour une assoc et qu'il existe également une property sur le même champs.

A ce niveau la, Nhibernate ne sait pas quel champs prendre, il utilise donc les deux ... et plante joyeusement ^^.


[...]


Dans mon cas, 29 correspond au nombre de champs (property) mappées dans mon fichier xml.

Pour résoudre le problème, deux solutions sont disponibles :
1- Rajouter les attributs update="false" insert="false" sur la/les property

2- Supprimer soit le/les many-to-one soit la/les property


Bonne journée