내 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>();
}
이 잘 작동하고 난 후 오전 결과를, 그러나 나는 hbm.xml 파일로 명명 된 쿼리에 코드에서 SQL을 이동하고 싶습니다. 그래서 내 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)와 이상한 유니 코드 charachters 확인;) –
@Ehrann - 방금 시도했지만 작동하지 않습니다. 나는이 일을 할 수 없다. – Rippo