2012-11-28 154 views
0

我有兩個預測的標準,兩個總和。結果受到某個Id的限制,因此它只是一行。我希望結果成爲雙打名單。Hibernate標準投射投影

是這樣的:

Criteria criteria = session.createCriteria(SomeClass.class).add(Restrictions.eq("id", id)) 
         .setProjection(Projections.projectionList() 
          .add(Projections.sum("aFloatColumn")) 
          .add(Projections.sum("anotherFloatColumn"))); 

我想要的結果是一個數組或列表。

否則這種方式:

Object result = (Object) criteria.uniqueResult(); 

結果是具有值的單個對象 「[SUM1,SUM2]」;

當我嘗試將其轉換爲Double []或列表< Double>我得到java.lang.ClassCastException。這是因爲結果是具有單個值的單個對象,它是一個元組。

什麼想法?

Obs .:我可以處理對象來做我想做的事。把它變成字符串,分割,演員......但我認爲必須有一個更聰明的方法來做到這一點。

+1

嘗試將其轉換爲Object [] – esmoreno

回答

0

兩個諮詢誰解決了這個問題:

setProjection(Projections.sum("aFloatColumn")); 
    List<Double> result = new ArrayList<Double>(); 
    result.add((Double) criteria.uniqueResult()); 

    setProjection(Projections.sum("anotherFloatColumn")); 
    result.add((Double) criteria.uniqueResult()); 

如果有人知道如何憑藉單杆做到這一點,讓我知道。韓國社交協會。

0

您可以將結果投射到Object[](它會返回包含兩個Double的對象數組,在您的情況下);那麼陣列中的每個元素都可以單獨投射。