1

クエリしてFooいます。FooプロパティがありませんIList<FooBar>(残念ながら)。FooBarプロパティがありFooます(ただし、はありませんBar)。Barには。がありIList<FooBar>ます。今日に等しいそのフィールドに対応するものが存在するすべてのsが必要ですFooFooBarBarBarDate

私はCriteriaAPIのプロではありませんが、それを使用するかどうかは私の選択ではありません。


編集:私はAPIで同じことを試し、QueryOverこれまでに得ました:

 var q1 = session.QueryOver<Foo>()
                 .WithSubquery.WhereExists<Bar>(
                     session.QueryOver<Bar>()
                            .Where(b => b.Date == DateTime.Today)
                            .JoinQueryOver<FooBar>(b => b.FooBars)
                            .Where(fb => fb.Foo == /*???*/ ))
                 .List<Foo>();

代わりに何を書くの/*???*/ですか?

4

1 に答える 1

1

初期の免責事項-私は現在NHibernateをインストールしていないので、これはテストされていませんが、次のような方法でアプローチします。

var foos = session.CreateCriteria<Bar>("bar")
                      .CreateCriteria("FooBars", "foobar")
                      .Add(
                         Restrictions.Eq(
                            "bar.Date", 
                            DateTime.Today.ToString("d", CultureInfo.InvariantCulture)
                         ))
                      .SetProjection(Projections.Property("foobar.Foo"))
                      .List<Foo>();
于 2012-06-25T15:00:55.123 に答える