0

nhibernate を使用して MVC3 でアプリケーションを開発しています。2 つのテーブルがあり、2 つのテーブル間で結合を実行したいのですが、複数の 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; 

これを試しましたが、機能せず、NUllも表示されます

 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 を取得できますが、次のクエリを起動する方法がわかりません。助けてください

4

1 に答える 1

0

考えられる問題の1つ:

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

結合のこの部分(SQLの場合)はnhibernateマッピングに含まれている必要があり、明示的に指定する必要はありません。

于 2012-04-15T19:39:54.373 に答える