2011-08-16 6 views
5

다음 가입을 통해 회사 ID가 부여 된 회사에 액세스 할 수있는 사용자를 반환하는 방법. 문제는 그들이 단순히 문자열 속성 아이디에 가입 UserAccess와 사용자 사이에 사용자 개체를 사용하여 명시 적으로 관계가없는 것입니다 :/:NHibernate QueryOver 선언되지 않은 관계에 참여하는 방법

User(Username, Name) 
UserAccess(Username, Company) 
Company(Id) 

Session.QueryOver<Company>() 
     .Where(c => c.Id == companyId) 
     .JoinQueryOver<UserCompanyAccess>(u => u.UserAccessList) 
     .JoinQueryOver<User>(u => **Nope no property, just a string** 
+0

도 참조 HTTP 하위 쿼리와 함께 할 수있는가 /stackoverflow.com/questions/6378224/nhibernate-queryover-to-join-noreatedententities –

답변

11

var subquery = QueryOver.Of<Company>() 
    .Where(c => c.Id == companyId) 
    .JoinQueryOver<UserCompanyAccess>(u => u.UserAccessList) 
    .Select(uca => uca.UserName); 

var users = session.QueryOver<User>() 
    .WithSubquery.WhereProperty(u => u.Name).In(subquery) 
    .List(); 
+0

큰 사람 내 좋은 사람 –

관련 문제