我有一個SecurityGroup實體女巫有Memebers和應用程序屬性。 應用程序是查找。NHibernate標準轉換結果
所以securityGroups在許多一對多與用戶表和
關係一個一對多與LookupApplciation(FK),現在我要選擇鏈接到一個特定用戶的所有應用程序。
我有如下標準:
public IList<LookupApplication> GetApplicationByUser(User user)
{
return
this.Session.CreateCriteria(typeof(SecurityGroup), "sg")
.CreateAlias("Members", "u")
.CreateAlias("Application", "al")
.Add(Restrictions.Eq("u.Id", user.Id))
.List<LookupApplication>();
}
它trows異常
The value "Edi.Advance.Core.Model.Security.SecurityGroup" is not of type "Edi.Advance.Core.Model.Lookups.LookupApplication" and cannot be used in this generic collection.
Parameter name: value
,這是正確的。
我如何可以改變結果IList<LookupApplication>?
感謝
第一個作品的罰款。其次,不像LookupApplication是一個查找實體,它不知道securityGroups。 第三個是hql :) 所以第一個對我來說是最好的一個,因爲只生成一個select語句。謝謝 – isuruceanu 2010-06-11 13:14:21
爲什麼推薦HQL?我通常不喜歡hql,雖然用於寫4年的TSQL:D – isuruceanu 2010-06-11 13:19:04
Session。的createQuery( 「從SecurityGroup SG內選擇sg.Application加入sg.MembersÙ其中u.Id =:用戶id」) .SetParameter( 「用戶id」,user.Id)的.List(); 最終查詢:) 謝謝,我應該回顧一下關於hqls的觀點 –
isuruceanu
2010-06-11 13:25:49