문제
이 있는 경우 라는 간단한 쿼리를 정의 프리폼 수 함수 중 하나에서 열:
<query name="Activity.GetAllMiles">
<![CDATA[
select sum(Distance) from Activity
]]>
</query>
나는 어떻게 얻는 결과의 합계 또는 쿼리지 않는 반환 하나의 매핑된 엔진 NHibernate 중 하나를 사용하여 IQuery 또는 ICriteria?
여기에 내려 im(수 없을 테스트하는 그것을 지금),는 것이 작동합니까?
public decimal Find(String namedQuery)
{
using (ISession session = NHibernateHelper.OpenSession())
{
IQuery query = session.GetNamedQuery(namedQuery);
return query.UniqueResult<decimal>();
}
}
해결책 2
죄송합니다!내가 실제로 원하는 합계,지 않을 수를 설명하는 대한 리뷰가 없습니다.Iv 편집한 후 이에 따라
이 잘 작동:
var criteria = session.CreateCriteria(typeof(Activity))
.SetProjection(Projections.Sum("Distance"));
return (double)criteria.UniqueResult();
이름 쿼리 접근 방식이 여전히 죽으면,"오류라는 쿼리:{활동입니다.GetAllMiles}":
using (ISession session = NHibernateHelper.OpenSession())
{
IQuery query = session.GetNamedQuery("Activity.GetAllMiles");
return query.UniqueResult<double>();
}
다른 팁
으로 간접적인 질문에 대한 답변을,여기에 어떻게 내가 그것을 하지 않고 명명된 쿼리가 있습니다.
var session = GetSession();
var criteria = session.CreateCriteria(typeof(Order))
.Add(Restrictions.Eq("Product", product))
.SetProjection(Projections.CountDistinct("Price"));
return (int) criteria.UniqueResult();
내 생각에는 원래를 들어,당신을 쿼리가 있습니다.UniqueResult();수를 반환합니다 정수입니다.
제휴하지 않습니다 StackOverflow