Hibernate Criteria API:如何获取两列所有值的总和

Hibernate Criteria API: how to get the sum of all the values along two columns

问题很简单,但我无法解决问题。 说,我有以下 table

|....X.....|.....A.....|.. ...B..|
|......|......3.......|.......2.......|
|......|.......1.......|.......4.......|
|......|......1.......|.......2.......|

我只需要获得 A 列和 B 列中值的总和,所以 (3 + 1 + 1) + (2 + 4 + 2) = 13 我想用 Criteria API.

我尝试创建一个 Projection 对沿 A 的值求和和一个 DetachedCriteria 具有类似的投影对沿 B 的值求和,但我无法从 DetachedCriteria 因为它没有公开此方法。

有什么建议吗?

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Number> q = cb.createQuery(MyEntity.class);
Root<MyEntity> t = q.from(MyEntity.class);    

Path<Number> fieldB = t.get(MyEntity_.B);
Path<Number> fieldA = t.get(MyEntity_.A); 
Expression<Number> sum = cb.sum(fieldA, fieldB);
q.select(sum.alias("SUM"));

System.out.println(em.createQuery(q).getSingleResult());

你可以用 sqlProjection

.setProjection(Projections.sqlProjection("sum(A + B) as sumAB", new String[] {"sumAB"} , new Type[] {Hibernate.DOUBLE}));