【问题标题】:Hibernate Criteria Cast with ProjectionsHibernate Criteria Cast with Projections
【发布时间】:2012-11-28 11:25:20
【问题描述】:

我有两个预测的标准,都是总和。结果受某些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……不过我觉得一定有更聪明的办法去做。

【问题讨论】:

    标签: java hibernate casting criteria hibernate-criteria


    【解决方案1】:

    通过两次咨询解决了:

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

    如果有人知道如何单枪完成,请告诉我。谢了。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-06-25
        • 2010-12-16
        • 2014-10-08
        • 1970-01-01
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        • 2021-05-15
        • 2011-04-24
        相关资源
        最近更新 更多