Hibernate Criteria投射与预测

时间:2012-11-28 11:25:20

标签: java hibernate casting criteria hibernate-criteria

我有两个预测的标准,两个总和。结果受到某些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<双>我得到java.lang.ClassCastException。那是因为结果是一个具有单个值的单个对象,它是一个元组。

任何想法?

Obs。:我可以处理对象来做我想做的事。把它变成String,split,cast ......但我认为必须有一个更聪明的方法来做到这一点。

2 个答案:

答案 0 :(得分: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());

如果有人知道如何一次性完成,请告诉我。 TKS。

答案 1 :(得分:0)

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