私はこのようなgrailsドメインを持っています
Point {
User user
Date assignedDate = new Date()
consumed = false
}
user, count(consumed=true), count(consumed=false) で行を返すクエリを実行したい
たとえば、データで
| USER | DATE | CONSUMED |
___________________________
| 1 | ... | true |
| 1 | ... | true |
| 1 | ... | false |
| 2 | ... | true |
| 2 | ... | false |
クエリは次を返す必要があります。
| USER | CONSUMED | NOT CONSUMED |
_________________________________
| 1 | 2 | 1 |
| 2 | 1 | 1 |
ページネーションが必要なため、これを単一のクエリで行う必要があります。gorm 基準または hibernate HQL を使用する場合に最適です。
プロジェクションで遊んでみましたが、成功しませんでした。
何か案が?ありがとうございました
回避策
回避策として、Michael J. Lee によって提案された式で hibernate 式のマッピングを使用しました。
2 つのマップされたフィールドを追加しました
点 { ユーザー ユーザー 割り当てられた日付Date = new Date() 消費=偽 自由計算式:「CASE WHEN 消費 = 0 THEN 1 ELSE 0 END」 notFree 式: 「CASE WHEN 消費 = 1 THEN 1 ELSE 0 END」 }
そして、次のような基準クエリを使用します。
Point.withCriteria{ 投影 { groupProperty('ユーザー') sum('無料') sum('notFree') } }