【问题标题】:Hibernate Criteria for sum(distinct clicks)总和的休眠标准(不同的点击)
【发布时间】:2017-01-12 17:20:45
【问题描述】:

我无法提出可以在查询中执行 sum(distinct clicks) 的条件。我通过简单的 sql 查询得到结果,但不能制定标准来做同样的事情。

目前我只能做

    .add(Projections.property("clicks").as("clicks"))

一个简单的sql查询是这样的

选择 sum(distinct clicks) 作为点击次数,source 作为 source,sum(jobs_sent) 作为 jobsSent from tbl_click_count where date= '2016-09-04' and domain = 'somename' and whitelabel = 'somename' 按来源、白标签、按 id desc 的域顺序分组

我的标准是这样的

    Criteria criteria = getSessionFactory().createCriteria(FeedClickCountModel.class)
     .add(Restrictions.ge("date", startDate))
     .add(Restrictions.le("date", uptoDate))
     .setProjection(Projections.projectionList()
     .add(Projections.sum("jobsSent").as("jobsSent"))
     .add(Projections.groupProperty("source").as("source"))
     .add(Projections.property("whiteLabel").as("whiteLabel"))
     .add(Projections.property("domain").as("domain"))
     .add(Projections.property("totalJobs").as("totalJobs"))

     .add(Projections.property("clicks").as("clicks"))
     // ^This i want is sum(distinct clicks)

     .add(Projections.property("date").as("date"))
     .add(Projections.property("id").as("id")))
     .setResultTransformer(Transformers.aliasToBean(FeedClickCountModel.class));

没有 sqlprojection 有没有办法做到这一点。

【问题讨论】:

    标签: java hibernate spring-mvc hibernate-criteria


    【解决方案1】:
    .add(Projections.distinct(Projections.property("clicks")));
    

    像这样?

    【讨论】:

    • 嗨,我用代码更新了问题,以便更好地理解需求。谢谢
    【解决方案2】:
    Projections.sum(Projections.countDistinct(propertyName));
    

    试试这个。

    如果没有预测,您将需要使用休眠 SQL 或原生 SQL 查询。

    【讨论】:

    • 它给出了强制转换异常......“类型 Projections 中的方法 sum(String) 不适用于参数 (CountProjection)”......我使用本机 sql 解决了它。虽然如果能按标准来做就更好了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2011-10-09
    • 2012-12-24
    相关资源
    最近更新 更多