2016-09-05 3 views
0

合計(distinct clicks)を実行できる基準を出すことができません。私は単純なSQLクエリで結果を得ていますが、同じことを行う基準を作ることはできません。合計(別個のクリック)のための休止状態の基準

現在、私はちょうど

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

を行うことができ、単純なSQLクエリは、クリックとして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

それはキャストの例外を与える.... "(Projectionsの型のメソッドsum(String)は引数(CountProjection)には適用できません" ....私はそれを解決したネイティブSQLを使用しています。それは基準で行うことができれば良いだろうが。 – Kharoud