Criteria APIを使用すると、結合left
および/または両方を実現できます。inner
左
// default left outer join
var leftResult = session.CreateCriteria<Fruit>()
.SetFetchMode("Color", NHibernate.FetchMode.Join)
.List<Fruit>();
インナー
// explicit inner join
var innerResult = session.CreateCriteria<Fruit>()
.CreateCriteria("Color", NHibernate.SqlCommand.JoinType.InnerJoin)
.List<Fruit>();
leftResultにはすべてが含まれますがFruits
、innerResultには次のもののみが含まれます。Color
編集: マッピング内に適用される特定のソリューション
デフォルトの左結合は変更できません: Nhibernate の Inner または Right Outer Join および Many to Many コレクションの Fluent Nhibernateです。しかし、他のNHibernate機能を使用するのはどうですか:
Fruit
が存在する場合にのみ意味があるとしましょうColor
。これが真で、色が選択されていない (列ColorId
が NULL に設定されている) これらのテーブル レコードが必要ない場合、マッピングを調整する方法があります。
// Mapping Fruit
Table("Fruits");
Where("colorId IS NOT NULL");
...
またはXMLで
<class name="Fruit" table="Fruits" where="colorId IS NOT NULL" ... >
( http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-classを参照)
したがって、これは LEFT を INNER に変更しませんが、少なくともマッピングではカラフルな果物のみを許可します...