| Investigating a little bit more I discovered a very strange behavior: the resulting type in the stream is not an object array of the SQL selection, but an object array with a single element, which is the Tuple. For example, this won't fail:
CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createQuery(Tuple.class);
Root<SampleEntity> from = criteriaQuery.from(SampleEntity.class);
Path<Double> path = from.get("foo");
criteriaQuery.multiselect(criteriaBuilder.sum(path), criteriBuilder.avg(path));
Query<Tuple> query = session.createQuery(criteriaQuery);
Stream<Tuple> stream = query.stream();
Object tuple = stream.findAny().get(); Tuple realTuple = ((Object[]) tuple)[0];
|