アカウントに複数のユーザーを含めることができるデータモデルがあります。
class Account {
Long id;
}
class User {
Long id;
@ManyToOne
Account account;
}
各アカウントのユーザー数を表示する次のクエリを実行したいと思います。
select Account.id, NumUsers.num from Account,
(select Account.id as account_id, count(User.id) as num
from User join Account on User.account_id=Account.id
group by Account.id) as NumUsers
where Account.id=NumUsers.account_id;
私はこの特定のクエリを次のように書き直すことができることを知っています:
select Account.id, count(User.id) from Account join
User on User.account_id=Account.id group by Account.id
ただし、複数のグループを必要とするレポートに対して、より複雑なクエリを作成する予定です。複数のgroupbyへの正しいアプローチについてここで読みました。
JPA2 Criteria APIを使用してクエリを作成するにはどうすればよいですか?