我有两个预测的标准,两个总和。结果受到某些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 ......但我认为必须有一个更聪明的方法来做到这一点。
答案 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的对象数组);那么数组的每个元素都可以单独转换。