2016-09-29 4 views
1

У меня есть запрос проекции SQL, который возвращает список, но мне нужен единственный результат. Вот мой Проекция запрос:Как использовать запрос проектирования Hibernate SQL?

Criteria criteria = getCurrentSession().createCriteria(TbLoyaltytrans.class) 
    .add(Restrictions.eq("custid", custId)) 
    .setProjection(Projections.projectionList() 
    .add(Projections.sum("pointin").as("pointin")) 
    .add(Projections.sum("pointout").as("pointout")) 
    .add(Projections.sqlProjection(
     "(pointin - pointout) as points", 
     new String[]{"points"}, 
     new org.hibernate.type.DoubleType[]{ 
       new org.hibernate.type.DoubleType() 
     }), 
     "points") 
); 

Я хочу, чтобы один объект, т.е .: count из приведенного выше запроса.

Что я сделал не так с вышеуказанным запросом?

ответ

1

Я предполагаю, что ваш использует criteria.list() для того, чтобы получить список. Вы можете использовать criteria.uniqueResult(), и он вернет один объект или null.

+0

я получил анс я просто вернуться '(Object []) criteria.uniqueResult()' и перебирать это как я понимаю, с помощью проекции вы получите три результата, как выход в выше 1 запроса, если для 'Projections.sum (» pointin "). as (" pointin ")' sencond для 'Projections.sum (« pointout »). as (« pointout »)), и последний из них - это ваш вывод SQLprojection, который я хочу, чтобы итерировать этот массив и получить третий как «Double reedeemPoints = new Double (obj [2] .toString())», и он работает на меня, спасибо за ваш ans –

+0

Если это действительно сработало, вы можете принять его ответ. Благодаря! – another