2016-09-05 2 views
0

쿼리에서 합계 (고유 한 클릭 수)을 수행 할 수있는 기준을 찾지 못했습니다. 간단한 SQL 쿼리로 결과를 얻고 있지만 동일한 작업을 수행 할 기준을 만들 수는 없습니다.최대 절전 모드 (뚜렷한 클릭)

현재 난 그냥 간단한 SQL 쿼리이

처럼

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

이 tbl_click_count에서 jobsSent로 클릭, 소스 등 소스, 합 (jobs_sent)로 합 (별개 클릭)를 선택 할 수 있습니다 여기서 제목 = '2016-09-04'및 도메인 = 'somename'및 whitelabel = 'somename'그룹은 소스, 화이트리스트, 도메인 순서에 따라 ID가

이고 내 기준은

입니다.
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없이이를 수행 할 수있는 방법이 있습니까?

답변

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

이렇게하면?

+0

안녕하세요, 요구 사항을 더 잘 이해할 수 있도록 코드로 질문을 업데이트했습니다. 고마워 – Kharoud

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

시도해보십시오.

예측이 없으면 hibernate SQL 또는 native SQL 쿼리를 사용해야합니다.

+0

그것은 캐스팅 예외를 제공합니다 .... "투영법에서 sum (String) 메서드는 인수 (CountProjection)에 적용 할 수 없습니다".... 나는 원시 SQL을 사용하여 해결했습니다. 그것은 기준에 의해 수행 될 수 있다면 더 좋았을지라도. – Kharoud