2012-04-15 55 views
0

使用的ICriteria我使用开发中MVC3的应用条件NHibernate的 我有两个表,我想执行的两个也之间的连接,我想包括多个有条件的地方.. 我张贴的所有相关表,因此它会清除要求:如何包括多个凡在NHibernate的

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>(); 

我能够得到的ID通过Ajax,但我不理解怎么火以下查询 请帮我

回答

0

一个可能的问题:

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

的这部分连接(在SQL中)应该在你的nhibernate映射中,你不需要明确地指定它。