私はいくつかのエンティティオブジェクトを設定するためにSQLクエリでNHibernateを使用しています。NHibernate - AddEntityとAddJoinの問題
私はUserオブジェクトを参照するItemオブジェクトを持っている(項目の所有者を示すために)
class Item
{
public User User;
}
私のSQLクエリは(それは、私はHQLを使用できない理由である、実際にはもっと複雑だですしかし、私は)AddJoin/AddEntityが働いていたことを確認するために、この使用を開始:ここで
SELECT {i.*}, {u.*}
FROM Item i INNER JOIN User u ON (i.UserId = u.Id)
WHere i.Id = 5
は私のコードです:
var x = session.CreateSQLQuery(sql)
.AddEntity("i", typeof(Item))
.AddJoin("u", "i.User")
.List();
これを実行すると、2次元の配列が得られます。配列の各アイテムには、Itemオブジェクト(Userプロパティが初期化されている)とUserオブジェクトが含まれています。
私には何が欠けていますか?私はUserプロパティを初期化したItemオブジェクトのリストを得ることを望んでいました(これはドキュメントの解釈方法です)。
ベン。ありがとう。私はこれを追加しました - .SetResultTransformer(新しいDistinctRootEntityResultTransformer()) - しかし、私は、ユーザーのリストを、希望のリストの項目の代わりに取得します。ルートエンティティはアイテムだと思うので、何か間違っているはずです。 –
別のアドインがある場合、これは機能しません。独自のDistinctRootEntityResultTransformerをロールバックする必要があります。下記参照。 – Trent