0

私のNHibernateマッピングでは:

(1) 「個人」には、名前、住所、電話、および登録のコレクションが含まれます。(2) 「登録」には、CourseOfferings、Statuses、および Flags のコレクションが含まれています。

以下は、登録とフラグの複数の結果 (デカルト) を含む結果を返します。ただし、トップ レベル (つまり、個人) は異なります。

            var query = session.QueryOver<Individual>()
            .Left.JoinAlias(i => i.Names, () => name)
            .Left.JoinAlias(i => i.Addresses, () => address)
            .Left.JoinAlias(i => i.Phones, () => phone)
            .Where(i => name.ToDate == null)
            .Where(i => phone.ToDate == null)
            .Where(i => address.ToDate == null)
            .Where(i=>i.ContactId ==748)
            .OrderBy(Projections.Property(() => name.NameOther)).Asc
             .Left.JoinQueryOver(i => i.Enrolments, () => enrolment)
            .Left.JoinAlias(s => s.Statuses, () => status)
            .Left.JoinAlias(s => s.CourseOffering, () => courseOffering)
            .Left.JoinAlias(s => s.Flags, () => flag)
            .Where(s => status.ToDate == null)
            .Where(s => flag.ToDate == null)
            //.TransformUsing(Transformers.AliasToBean<StudentEnrolment>())
             .TransformUsing(Transformers.DistinctRootEntity)

どんな助けでも大歓迎です。

前もってありがとう、ダルメッシュ

4

2 に答える 2

0

理想的ではありませんが、id のプロジェクションとサブクエリを使用して動作させることができます。

var subQuery = QueryOver.Of<Individual>()
            ... add all your restrictions ...
            .Select(i => i.Id);

var results = session.QueryOver<Individual>()
              .WithSubquery.WhereProperty(i => i.Id).In(subQuery)
              .List();

結果には、正しいコレクションを持つエンティティのリストが含まれている必要があります (特に指定しない限り、遅延ロードされます)。

于 2013-10-28T09:33:25.810 に答える
0

私は Future<> クエリを使用することになりました。助けてくれてありがとう。

于 2013-12-03T05:46:56.967 に答える