문제

이 있는 경우 라는 간단한 쿼리를 정의 프리폼 수 함수 중 하나에서 열:

  <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();수를 반환합니다 정수입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top