2011-08-20 2 views
1

J'ai plusieurs mappages un-à-plusieurs dans un projet NHibernate qui sont configurés pour utiliser Sets.Qu'est-ce qui influence NHibernate pour utiliser des jointures externes au lieu de jointures internes?

Sans faire de projets, et avec max_fetch_depth mis à 2, NHibernate semble toujours utiliser des jointures externes au lieu de jointures internes.

Y a-t-il une raison à cela? La structure de mappage est l'équivalent de:

Category 
    +- Document.Category 
    +- Document.User 

Une simple configuration un-à-plusieurs.

Répondre

6

si Nhibernate a fait des jointures internes, cela signifie que les catégories qui n'ont pas de documents ne seront pas récupérées.
C'est la raison pour laquelle nHibernate utilise toujours des jointures externes, à moins que vous ne demandiez spécifiquement autre chose.

+0

Cela semble logique, bien que cela signifie probablement que NHibernate ramène beaucoup plus de lignes que nécessaire, sauf si vous écrivez vous-même toutes les requêtes de collection? –

+1

non .. pourquoi diriez-vous cela? n'avez-vous pas besoin de lignes de 'Category' qui ne contiennent pas de' Document's? –

+0

@sJohnny Je peux voir pourquoi il le fait maintenant, car il convient à la plupart des scénarios. Cependant, pour de nombreuses personnes, cela crée un énorme jeu d'enregistrements. Mais je suppose que vous êtes censé aborder ces questions avec des critères personnalisés –

Questions connexes