我有一个像这样的 grails 域
Point {
User user
Date assignedDate = new Date()
consumed = false
}
我想做一个返回用户行的查询,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 标准或休眠 HQL。
我试过玩投影,但没有成功。
任何想法?谢谢
解决方法
作为一种解决方法,我使用了带有 Michael J. Lee 建议的公式的休眠公式映射。
我添加了两个映射字段
观点 {
用户用户
日期分配日期 = 新日期()
消耗=假
免费公式:“CASE WHEN 消费 = 0 THEN 1 ELSE 0 END”
notFree 公式:“CASE WHEN 消费 = 1 THEN 1 ELSE 0 END”
}
并使用标准查询,例如:
Point.withCriteria{
预测{
组属性('用户')
总和('免费')
总和('notFree')
}
}