2012-04-12 13 views
1

CUSTOMER、COMPANYと、企業と顧客との関係を維持するリレーショナルテーブルCUSTOMER_COMPANY。NHibernate QueryOver Where Ex存在

私は特定の会社に属し、(フィールド)で、彼/彼女の電子メールは、このemailListである顧客を検索したい電子メール

一覧emailList

のリストを持っています。 QueryOverを使って私はどうすればいいですか?

public class CustomerMap : ClassMap<Customer> 
{ 
    public CustomerMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.Email); 
     //... Other Fields 

     HasMany(x => x.CompanyCustomers); 
    } 
} 


public class CompanyMap : ClassMap<Company> 
{ 
    public CompanyMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Title); 
      //... Other Fields 

     HasMany(x => x.CompanyCustomers); 
    } 
} 


public class CompanyCustomerMap : ClassMap<CompanyCustomer> 
{ 
    public CompanyCustomerMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.IsActive); 
     Map(x => x.CustomerType); 
     ... 

     References(x => x.Customer); 
     References(x => x.Company); 
    } 
} 

私はあなたがこのように試すことができ

+0

することは私たちの顧客と会社のためにあなたのマッピングを表示します – Rippo

+0

@Rippo okクラスマップを追加してください。 –

答えて

1

...電子メールのリストに存在する会社に属している顧客を取得したい:

Company company = null; 
session.QueryOver<Customer> 
    .JoinAlias(customer => customer.Company,() => company) 
    .WhereRestrictionOn(() => company.Email).IsIn(new[] { "email_1", "email_2", ... }) 
    .TransformUsing(Transformers.DistinctRootEntity) 
    .List(); 
+0

おそらくちょうど.List()でなければなりません。顧客を照会する理由はなく、特に顧客のバックアウトを望むときは、会社のリストを返す必要はありません。 – Fourth

+0

@Fourthもちろん、あなたが正しいです、間違いでした、私はそれを修正しました。 – Anton

関連する問題