【问题标题】:Hibernate: To return sum of specific column grouped by date休眠:返回按日期分组的特定列的总和
【发布时间】:2014-09-03 15:52:22
【问题描述】:

我需要编写一个条件查询来检索由特定date 分组的amount 列的总和。我的意思是表由以下列组成:

  id      partner_id    amount         date       platform_id
serial     integer    numeric(13.4)  timestamp      integer

Hibernate 映射按以下方式进行:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;

@ManyToOne(targetEntity = Partner.class, fetch = FetchType.EAGER)
@JoinColumn(name="partner_id")
private Partner partner;

@Column(name = "amount")
private BigDecimal amount;

@Column(name = "date")
private Date date;

@ManyToOne(targetEntity = Platform.class, fetch = FetchType.EAGER)
@JoinColumn(name="platform_id")
private Platform platform;

我编写了以下查询:

Criteria criteria = getSession().createCriteria(DailyProfit.class)
        .add(Restrictions.eq("partner", partner))
        .add(Restrictions.eq("platform", platform))
        .add(Restrictions.between("date", from, to));

criteria.setProjection(Projections.groupProperty("date"));
criteria.setProjection(Projections.sum("amount").as("DailySum"));

但是criteria.list() 返回[1119950.8300, null, null, null, null, null, null, null, null, null]。这绝对不是我所期望的。你能解释一下这个结果并帮助我修复条件查询吗?

【问题讨论】:

    标签: java hibernate criteria


    【解决方案1】:

    你的代码很完美

    criteria.list() - 将返回对象列表(集合)。您应该使用索引或迭代器来获取结果的值。

    或者

    Integer amount= (Integer) criteria.uniqueResult();

    【讨论】:

    • 但是我需要收到一个配对列表(日期,总和),而不是我已经完成了。我可能不明白结果标准已返回吗?
    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 2011-11-01
    • 2013-08-30
    • 2019-03-13
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多