2009-06-04 11 views
0

でICriteriaと結合実体を選択する私はこのような何か行うことができます。はHQLでNHibernateは

select roleHeldByOwner.TargetPerson 
from Person roleOwner 
join roleOwner.RolesOnPeople roleHeldByOwner 
where roleOwner.Id = :roleOwnerId 

どのように私は基準のクエリで同じことを達成することができますか?具体的には、from句の最初のエンティティではないものを選択します。

答えて

1

サブ基準を作成して、射影を使用してスカラー結果を選択することで、参加できます。あなたが複数の投影が必要な場合は、

session.CreateCriteria(typeof(Person)) 
    .Add(Restrictions.Eq("Id", roleOwnerId)) 
    .SetProjection(Projections.Property("TargetPerson")) 
    .CreateCriteria("RolesOnPeople", JoinType.InnerJoin) // Or LeftOuterJoin, etc. 
    .List(); 

ようProjectionListを使用します:あなたの条件クエリは次のようになります私はあなたのドメインがどのように見えるか、あなたがしようとしている何かわからないんだけど

.SetProjection(Projections.ProjectionList() 
    .Add(Projections.Property("...", ...)) 
    .Add(...) 
    ... 
) 

上記の内容が正しいとは限りません。しかし、それはあなたが始めなければならないものでなければなりません。

+0

すばらしい、ありがとうスチュアート – mattcole

関連する問題