19

次のクラスがあります。

class User {
  hasMany = [ratings: Rating] 
} 

class Item {
 hasMany = [ratings: Rating]
}

class Rating {
 belongsTo = [user: User, item: Item]
}

アイテムを評価した個別のユーザーをカウントしたいと考えています。

以下は機能しません。

select count(distinct(r.user)) from Rating as r
        where r.item=:item
        group by r.user

HQL クエリを機能させるにはどうすれば変更できますか?

4

2 に答える 2

43

使用方法を少し変更するだけで、クエリは期待どおりに機能するはずですdistinct

select count(distinct r.user) from Rating as r 
where r.item = :item group by r.user

このクエリを実行するもう 1 つの方法ですが、より長い方法は、Userandを使用することjoinです。

select count(distinct u) from User as u 
inner join u.ratings as r where r.item = :item
group by r.user
于 2013-09-13T18:14:11.623 に答える