该
CriteriaBuilder接口提供以下算术功能:
- 加成:
sum(a, b)
- 减法:
diff(a, b)
- 乘法:
prod(a, b)
- 师:
quot(a, b)
其中
a
b参数可以是一个表达和/或文字。
至于查询,以下是以易于阅读的形式编写的示例:
CriteriaBuilder cb = em.getCriteriaBuilder();CriteriaQuery<Number> q = cb.createQuery(Number.class);Root<T> t = q.from(T.class);// build SUM(A * (100.0 - B) / 100.0) expressionexpression<Double> diff = cb.diff(100.0, t.<Double>get("B"));expression<Double> prod = cb.prod(t.<Double>get("A"), diff);expression<Number> quot = cb.quot(prod, 100.0);expression<Number> sum = cb.sum(quot);q.select(sum.alias("D"));System.out.println(em.createQuery(q).getSingleResult());
您还可以将查询作为单行构建:
q.select(cb.sum(cb.quot(cb.prod(t.<Double>get("A"), cb.diff(100.0, t.<Double>get("B"))), 100.0)).alias("D"));
我希望它可以澄清您的疑问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)