Bonjour,
Je travaille actuellement sur un projet s'appuyant sur NHibernate. Je rencontre un problème avec la représentation (le mapping) d'une relation de type 0,n <-> 0,n.

J'ai créé dans ma base un jeu de trois tables:
-Cegid.Softwares {Id,Label}
-Cegid.SoftwareToFlow {Id,SoftwareId,FlowId}
-dbo.FluxImport {Id,Name,....}
Ainsi que les classes correspondantes


Voici les fichiers de mapping correspondantes:
-Software.cs -> Cegid.Softwares
-DataFlow.cs -> dbo.FluxImport


Software:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="XXX.NHibernate"
									 namespace="XXX.NHibernate.Accounts"
									 default-access="field.camelcase-underscore" schema="[XXXXXXXX].Cegid">
	<class name="Software" batch-size="50" table="Softwares">
		<id name="Id" column="Id" type="System.Int32">
			<generator class="native" />
		</id>
 
		<property name="Label" column="Label" type="String" not-null="true" />
 
		<set name="Flows" table ="SoftwareToFlow" lazy="true">
			<key column="SoftwareId"/>
			<many-to-many class="XXX.XXX.XXX.DataFlow" column="FlowId" outer-join="true"/>
		</set>		
 
	</class>
</hibernate-mapping>

DataFlow:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="XXX.NHibernate"
									 namespace="XXX.NHibernate.DataFlows"
									 default-access="field.camelcase-underscore">
	<class name="DataFlow" batch-size="50" lazy="true" table="FluxImport">
		<id name="Id" column="IdFluxImport" type="System.Guid">
			<generator class="assigned" />
		</id>
 
		<property name="Name" column="CompteFTP" type="String" not-null="true" />
		<property name="UpdateZipCodeFromGeocoding" column="CorrectionCodePostalParGeocodage" type="Boolean" not-null="true" />
	</class>
</hibernate-mapping>


Lorsque je tente de réaliser une requête, je rencontre l'erreur suivante:

failed: NHibernate.MappingException : Invalid mapping information specified for type Pjpa.NHibernate.Accounts.Software, check your mapping file for property type mismatches
----> System.InvalidCastException : Impossible d'effectuer un cast d'un objet de type 'NHibernate.Collection.PersistentSet' en type 'Pjpa.NHibernate.DataFlows.DataFlow'.
à NHibernate.Persister.Entity.AbstractEntityPersister.SetPropertyValues(Object obj, Object[] values)
à NHibernate.Impl.SessionImpl.InitializeEntity(Object obj)
à NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session)
à NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
à NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
à NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
à NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes)
à NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results)
à NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria)
à NHibernate.Impl.CriteriaImpl.UniqueResult[T]()
C:\bo\trunk\Framework\PJPA.NHibernate.Tests\Explicit\ExplicitFixture.cs(157,0): à Pjpa.NHibernate.Explicit.ExplicitFixture.LoadType[T,U](ISession session)
C:\bo\trunk\Framework\PJPA.NHibernate.Tests\Explicit\ExplicitFixture.cs(81,0): à Pjpa.NHibernate.Explicit.ExplicitFixture.Query()
--InvalidCastException
à (Object , Object[] , SetterCallback )
à NHibernate.Bytecode.Lightweight.AccessOptimizer.SetPropertyValues(Object target, Object[] values)
à NHibernate.Persister.Entity.AbstractEntityPersister.SetPropertyValues(Object obj, Object[] values)

J'ai tenté de modifier mes fichiers de mapping et l'erreur vient du nœud:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
		<set name="Flows" table ="SoftwareToFlow" lazy="true">
			<key column="SoftwareId"/>
			<many-to-many class="XXX.NHibernate.DataFlows.DataFlow" column="FlowId" outer-join="true"/>
		</set>

Si vous pouviez me fournir quelques pistes pour venir à bout de mon erreur.
Je vous remercie d'avance de votre attention.

Harmelyo