我有一个像这样的 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') } }