在我的MSSQL服務器中,我有一個名爲AllFavourite的SQL視圖。爲了將數據加載到我的DTO類我已經在我的hbm.xml文件如下...在導入類中使用hbm中的命名查詢
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Domain.Model.Entities" assembly="Domain.Model">
<import class="AllFavourite"/>
</hibernate-mapping>
在我的代碼,我有以下。
public IList<AllFavourite> GetFavourites(int userId)
{
var query = Session
.CreateSQLQuery("SELECT * FROM AllFavourite where UserId=:UserId")
.SetInt32("UserId", userId)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(AllFavourite)));
return query.List<AllFavourite>();
}
這個偉大的工程,生產,我之後的結果,但是我想從代碼中的SQL移動到一個名爲查詢到的hbm.xml文件。所以,我的hbm.xml文件現在看起來是這樣
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Domain.Model.Entities" assembly="Domain.Model">
<import class="AllFavourite"/>
<query name="GetAllFavouriteByUserId">
<![CDATA[
SELECT * FROM AllFavourite WHERE UserId=:UserId
]]>
</query>
</hibernate-mapping>
,現在我的代碼看起來像這樣
public IList<AllFavourite> GetFavourites(int userId)
{
var query = Session
.GetNamedQuery("GetAllFavouriteByUserId")
.SetInt32("UserId", userId)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(AllFavourite)));
return query.List<AllFavourite>();
}
然而,當我運行此我得到一個錯誤: -
Parameter UserId does not exist as a named parameter in [SELECT * FROM AllFavourite WHERE UserId=:UserId]
所以我的問題是有可能以這種方式使用命名查詢?
似乎是正確的給我.. 。嘗試使用不同的命名參數:UserId(例如:uid)並檢查奇怪的unicode charachters;) – 2009-12-31 09:13:42
@Ehrann - 我剛剛嘗試過,但它不起作用。我無法解決這個問題。 – Rippo 2009-12-31 09:26:19