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}));
问题很简单,但我无法解决问题。 说,我有以下 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}));