Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > NHibernate
NHibernate Forum d'entraide sur l'utilisation du mappeur objet/relationnel NHibernate.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/03/2011, 17h17   #1
m3z91
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 33
Points : 12
Points : 12
Par défaut [Nhibernate] mapping one-to-one join left impossible

Bonjour,

Je rencontre un nouveau problème. NHibernate se comporte bizarrement sur un mapping one-to-one.

j'ai déclaré la relation comme suit

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  <class name="info" table="Info"...> 
 
      <id name="Id" type="System.Int32" unsaved-value="null">
        <column name="INV_ID" />
      </id>
 
       ....
 
      <one-to-one name="ExInfo" class="ExInfo" fetch="join" outer-join="true" >             
      </one-to-one>
 
  </class>
 
  <!-- Mappings for table 'ExInfo' -->
  <class name="ExInfo" table="ExInfo" lazy="false">
 
      <!-- Identity mapping -->
      <id name="Id" type="System.Int32" unsaved-value="null">
        <column name="INV_ID" />
      </id>
 
      <!-- Simple mapping -->
      <property name="info1" column="info1"/>
  </class>
Je souhaites faire un left join entre les deux tables mais Nhibernate me génère un select a la place.
Du coup, lorsque je n'ai pas d'enregistrement dans ExInfo en relation avec celui de la table la table Info, une sélection ne retourne rien. Normal.

Comme faire pour "forcer" un left outer joint ?

Merci de votre aide
m3z91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 16h45   #2
m3z91
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 33
Points : 12
Points : 12
Trouvé !

En fait le mapping gère le type de jointure. Sur une requête simple cela marche parfaitement. MAIS si on fait une requête ICriteria avec une condition sur la jointure alors cette derniere force le type de jointure.

Pour conserver le left outer join il faut donc quelque chose du genre

Code :
criteres.CreateAlias("ExInfo", "ex", NHibernate.SqlCommand.JoinType.LeftOuterJoin);
"

et voilou.

@+
m3z91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web