2009-06-04 5 views
0

자 NHibernate의 ICriteria와 결합 된 개체를 선택 :나는 이런 식으로 뭔가 할 수있는 HQL에서

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

가 어떻게이 기준 쿼리에서 같은 일을 달성 할 수 있습니까? 구체적으로는 from 절의 첫 번째 항목이 아닌 항목을 선택하는 것입니다.

답변

1

하위 기준을 만들고 투영으로 스칼라 결과를 선택하여 가입 할 수 있습니다. 나는 당신의 도메인이 어떻게 생겼는지 또는 당신이 무슨 말을 하려는지 모르겠어요

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

: 여러 예측이 필요하면

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

, 같은 ProjectionList를 사용처럼 기준 쿼리는 뭔가를 보일 수 있습니다 위의 내용이 정확하지 않을 수 있습니다. 그러나, 그것은 당신이 시작하는 데 필요한해야합니다.

+0

위대한, 감사합니다 스튜어트 – mattcole

관련 문제