这个问题很简单,但我无法得到一些有用的东西。 说,我有下表
| ...的 X .... | .....的 A ..... | .....的乙< / STRONG> .... |
| ........... | ..... 3 ..... | ..... 2 ..... |
| ........... | ..... 1 ..... | ..... 4 ..... |
| ........... | ..... ..... 1 | 2 ..... ..... |
我只需要获得A列和B列中的总和值,所以(3 + 1 + 1)+(2 + 4 + 2)= 13,我想将它与Criteria API一起使用。< / p>
我尝试创建一个Projection
来汇总A和DetachedCriteria
的值,并使用类似的投影将B中的值相加,但我无法从DetachedCriteria
获得唯一的结果因为它没有暴露这种方法。
有什么建议吗?
答案 0 :(得分:3)
您可以使用sqlProjection
.setProjection(Projections.sqlProjection("sum(A + B) as sumAB", new String[] {"sumAB"} , new Type[] {Hibernate.DOUBLE}));
答案 1 :(得分:-5)
https://stackoverflow.com/a/21650037/351861
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());