2016-09-29 103 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(),它會返回一個Object或null。

+0

我得到了ans我只是返回'(Object [])criteria.uniqueResult()'和迭代這個我明白通過使用投影你會得到三個結果作爲輸出在上面的查詢第一如果對於'Projections.sum(「 pointin「)。as(」pointin「)'sencond爲'Projections.sum(」pointout「)。as(」pointout「))'最後一個是你的SQLprojection輸出,我想迭代這個數組並獲取第三個像'Double reedeemPoints = new Double(obj [2] .toString())'這樣的位置,它對我很有用謝謝你的回答。 –

+0

如果真的對你有用,你可以接受他的回答。謝謝! – another