次のようなデータモデルがあります。
class Hand {
public int id;
...
}
class Person {
public int id;
public string name;
public IList<Hand> hands;
...
}
データベースからデータを取得するには、次のようにします。
ICriteria criteria = databaseSession.CreateCriteria(typeof(Person));
ProjectionList projections = Projections.ProjectionList();
projections
.Add(Projections.Property("id").As("id"))
.Add(Projections.Property("name").As("name"))
.Add(Projections.Property("hands").As("hands"));
projections.Add(Projections.GroupProperty("id"));
projections.Add(Projections.Count("id"), "count");
criteria.SetProjection(projections);
criteria.SetResultTransformer(
NHibernate.Transform.Transformers.AliasToBean(typeof(PersonDTO)));
しかし、NHibernate は、hands プロパティにネストされたオブジェクトをロードしません。null を与えるだけです。ネストされたオブジェクトを埋める方法も教えてください(複数のレベルの深さ)。クエリの代わりにプロジェクションを使用する方が良いでしょう。注: プロジェクションなしでデータをロードすると、うまく機能したため、マッピングでは問題になりません。