2011-08-16 20 views
5

उन उपयोगकर्ताओं को वापस करने के लिए निम्नलिखित में शामिल हों, जिनके पास कंपनी आईडी के लिए कंपनी तक पहुंच है। समस्या कोई स्पष्ट संबंध 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-unrelated-entities –

उत्तर

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

लोविन 'यह मेरा अच्छा आदमी बड़ा –

संबंधित मुद्दे