0

プランとチケットの2つのテーブルがあります。TravelPlanにはあるが、Ticketにはないすべてのレコードが必要です。

    Template.Criteria.CreateCriteria("Plan")
              .Add(Subqueries.PropertyNotIn("UserID",
                                            DetachedCriteria.For(typeof(Ticket))
              .SetProjection(Projections.Property("UID")))); 

上記のクエリはレコードを返しません。

4

1 に答える 1

1

SearchTemplate が何をするのか推測できませんが、切り離された基準ではなく外側の基準に射影を適用しています。

また、「ルート」基準は、Ticket ではなく、TravelPlan に対するものである必要があります。

言い換えると:

criteria = DetachedCriteria.For<TravelPlan>()
               .Add(Subqueries.PropertyNotIn(
                        "UserId",
                        DetachedCriteria.For<Ticket>()
                            .SetProjection(Projections.Property("UID"))))

これは、TravelPlanに Ticket のプロパティUserIDと一致するUIDプロパティがあることを前提としています。

于 2011-01-25T21:49:53.597 に答える