【问题标题】:Hibernate - Sum two columns休眠 - 对两列求和
【发布时间】:2017-03-11 20:20:00
【问题描述】:

大家!

我试图避免直接使用 Criteria 编写 SQL/HQL 查询,所以我想知道是否可以这样做:

我的实体:

@Entity
public class A {
   @Column
   private int a1;

   @Column
   private int a2;
   .....
}

我想做什么:

select sum(a1 + a2) from A

【问题讨论】:

  • 你有什么尝试吗?

标签: hibernate hibernate-criteria


【解决方案1】:

经过一番研究,这可以使用Formula注解来完成:

@Entity
public class A {
   @Column(name ="a1")
   private int a1;

   @Column(name ="a2")
   private int a2;

   @Formula("a1 + a2")
   private int a3;
   .....
}

在标准中:

Criteria cr = getInstanciaCriteria(A.class); 
cr.setProjection(Projections.projectionList().add(Projection‌​s.sum("a3"));

【讨论】:

    【解决方案2】:

    直接来自 Hibernate 的文档:

    HQL 查询甚至可以返回聚合函数的结果 属性:

    选择 avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat) 来自猫猫

    支持的聚合函数有:

    avg(...), sum(...), min(...), max(...)
    
    count(*)
    

    所以SELECT sum(e.a1+e.a2) FROM Entity e 应该没问题。

    【讨论】:

    • Criteria cr = getInstanciaCriteria(A.class); cr.setProjection(Projections.projectionList().add(Projections.sum("a1 + a2")); 我试图这样做,但我知道这是错误的。
    • Ìt 无法识别列 a1 + a2
    • 你试过 root.get("a1"),root.get("a2") 吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多