Bonjour à tous,

J'ai suivi, entre autre, le tuto de developpez pour me lancer sur NHibernate. Mais j'ai malheureusement un petit bug... Une exception est généré à cause d'un many-to-one

Code : 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
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="PamNHibernate" assembly="PamNHibernate">
	<class name="Employe" table="EMPLOYES">
		<id name="Id" column="ID" unsaved-value="0">
			<generator class="native" />
		</id>
		<version name="Version" column="VERSION"/>
		<property name="SS" column="SS"/>
		<property name="Nom" column="NOM"/>
		<property name="Prenom" column="PRENOM"/>
		<property name="Adresse" column="ADRESSE"/>
		<property name="Ville" column="VILLE"/>
		<property name="CodePostal" column="CP"/>
		<many-to-one name="Indemnites" column="INDEMNITE_ID" cascade="save-update"/>
	</class>
</hibernate-mapping>

Voici la tête de l'exception


Code : 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
NHibernate.HibernateException was caught
  Message=Creating a proxy instance failed
  Source=NHibernate
  StackTrace:
       à NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session)
       à NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session)
       à NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation)
       à NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean eager, Boolean isNullable)
       à NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session)
       à NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner)
       à 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.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
       à NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes)
       à NHibernate.Hql.Classic.QueryTranslator.List(ISessionImplementor session, QueryParameters queryParameters)
       à NHibernate.Impl.SessionImpl.Find(String query, QueryParameters parameters, IList results)
       à NHibernate.Impl.SessionImpl.Find[T](String query, QueryParameters parameters)
       à NHibernate.Impl.QueryImpl.List[T]()
       à PamNHibernate.ShowDataBase.ShowDataBase1() dans c:\users\isen\documents\visual studio 2010\projects\PamNHibernate\PamNHibernate\Console\ShowDataBase.cs:ligne 50
       à PamNHibernate.ShowDataBase.Main(String[] args) dans c:\users\isen\documents\visual studio 2010\projects\PamNHibernate\PamNHibernate\Console\ShowDataBase.cs:ligne 22
  InnerException: System.Reflection.AmbiguousMatchException
       Message=Correspondance ambiguë trouvée.
       Source=mscorlib
       StackTrace:
            à System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)
            à System.Type.GetMethod(String name)
            à Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.LockBlockExpression.Emit(IEasyMember member, ILGenerator gen)
            à Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ExpressionStatement.Emit(IEasyMember member, ILGenerator gen)
            à Castle.DynamicProxy.Builder.CodeBuilder.AbstractCodeBuilder.Generate(IEasyMember member, ILGenerator il)
            à Castle.DynamicProxy.Builder.CodeBuilder.EasyMethod.Generate()
            à Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.EnsureBuildersAreInAValidState()
            à Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType()
            à Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType()
            à Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces)
            à Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces)
            à Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor)
            à NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session)
       InnerException:
Si je supprime totalement "Indemnité" (base et classes) tout se passe normalement... Donc c'est bien sur le fait que ce soit un objet attaché à un objet...
Après quelques heures de recherche sur le net et de debug... j'en suis toujours au même point


Quelqu'un a une idée de ou cela pourrait venir?

Merci d'avance