0

私は2つの予測、両方の合計を持つ基準を持っています。結果は ID によって制限されるため、1 行のみです。結果を double のリストにしたい。

このようなもの:

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 .: オブジェクトを処理して、やりたいことを実行できます。それを文字列、分割、キャストに変えます...しかし、もっとスマートな方法があるに違いないと思います。

4

2 に答える 2

0

2つの相談で解決しました:

    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 に答える