0

我有一个标准,有两个预测,都是总和。结果受某些Id限制,因此只有一行。我希望结果是双打列表。

像这样的东西:

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[] 或 List< Double> 时,我得到 java.lang.ClassCastException。那是因为结果是具有单个值的单个对象,它是一个元组。

有任何想法吗?

Obs.:我可以处理对象做我想做的事。转成String、split、cast……但我觉得一定有更聪明的办法来做。

4

2 回答 2

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());

如果有人知道如何用一个镜头做到这一点,请告诉我。谢了。

于 2012-11-28T11:57:07.370 回答
0

您可以将结果转换为Object[](在您的情况下,它将返回一个包含两个Doubles 的对象数组);那么数组的每个元素都可以单独转换。

于 2017-04-05T13:37:41.700 回答