2012-04-15 19 views
0

MVC3でnhibernateを使用してアプリケーションを開発しています 2つのテーブルがあり、2つのテーブルの間でジョインを実行したい場合や、複数の条件を含める場合。 それは要件をクリアするように、私は関連するすべてのテーブルを掲載しています:nhibernateでIcriteriaを使用して複数のwhere条件を含める方法

First table is HobbyMaster: 
HobbyId 
HobbyName 

Second Table is HobbyHome: 
HobbyHomeId 
HobbyHomeName 

Third Table is HobbyDetail: 
HobbyDetailId 
HobbyId(Foreign Key) 
HobbyHomeId(Foreign key) 

Fourth Table is HobbyHomeAddress: 
Id(primary key) 
HobbyHomeId(Foreign key) 
StateId(Foreign Key) 
DistrictId(Foreign key) 

Fifth Table is State: 
stateid 
statename 

last Table is District: 
districtid 
districtname 

私はこのようなクエリを書きたい:

select * from HobbyHomeAddress hobadd, 
       HobbyDetail hobdet 
where hobdet.HobbyId=hobbyid 
    and hobadd.HobbyId=hobdet.HobbyId 
    and hobadd.StateId=stateid; 

も、私はこれを試してみましたが、それは動作していないと私にNUを与えるLL

hobbyhomeaddress = session.CreateCriteria(typeof(HobbyHomeAddress)) 
       .CreateAlias("HobbyDetail", "HobbyDetail", NHibernate.SqlCommand.JoinType.InnerJoin) 
       .Add(Expression.Eq("HobbyID", hobbyid)) 
       .Add(Restrictions.Eq("HobbyHomeAddress.HobbyHomeId", "HobbyDetail.HobbyHomeId")) 
       .Add(Expression.Eq("ProvincialState.ProvincialStateID", stateid)) 
       .List<HobbyHomeAddress>(); 

私はAJAXを通じてIDを取得することができていますが、私は次のクエリ を発射する方法を理解していないのです私

答えて

0

一つの可能​​性のある問題を助けてください:

.Add(Restrictions.Eq("HobbyHomeAddress.HobbyHomeId", "HobbyDetail.HobbyHomeId")) 

のこの部分結合(SQLで)はあなたのnhibernateマッピングになければなりません。それを明示的に指定する必要はありません。

関連する問題