总和的Hibernate标准(明显的点击次数)

时间:2016-09-05 10:42:04

标签: java hibernate spring-mvc hibernate-criteria

我无法提出可在查询中执行总和(明显点击次数)的条件。我通过简单的SQL查询获得结果,但无法制定标准来执行相同的操作。

目前我可以做到

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

一个简单的SQL查询就像这样

从tbl_click_count中选择总和(不同点击次数)作为点击,来源作为来源,总和(jobs_sent)作为jobsSent,其中date =' 2016-09-04'和domain =' somename'和whitelabel =' somename'按来源分组,whitelabel,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,有没有办法做到这一点。

2 个答案:

答案 0 :(得分:0)

.add(Projections.distinct(Projections.property("clicks")));

喜欢这个吗?

答案 1 :(得分:0)

Projections.sum(Projections.countDistinct(propertyName));

试试这个。

如果没有投影,您将需要使用hibernate SQL或本机SQL查询。