3
A
回答
0
Hibernate中的聚合直接通过SQL中的聚合直接映射到相应的组,因此如果您直接在SQL中编写查询,则答案基于您将应用于布尔列的SQL聚合函数。
Projections类中的基本聚合函数本质上通常是数字。你可以使用count,但是这只会计算组中有多少行具有非空值,这似乎不是很有用。我所知道的任何聚合函数都没有产生布尔值,所以你可能不得不做一些自定义的事情。
通过扩展AggregateProjection类,您可以提供用于投影的自定义SQL子句。通常,这将用于访问特定于平台的聚合函数(例如STDDEV_POP),但您可以提供任何可用于SQL查询的有效SQL片段。例如,如果你想实现一个逻辑OR(true,如果该组中的任何行有一个真正的价值),你可以使用类似
if(sum(if(boolean_column,1,0))>0,true,false)
从您的自定义投影toSqlString方法的返回值。然后,您将使用此自定义类,就像使用Projections类中的任何标准选项一样。
这个类的实现有点棘手,因为您必须确保您在字符串中使用的值是正确的Hibernate列别名,这很容易从AggregateProjection的受保护getColumnAlias方法中获取。
相关问题
- 1. 休眠设置布尔值
- 2. 休眠时的值类型
- 3. 如何聚合布尔列
- 4. 用休眠映射布尔值
- 5. 映射休眠布尔值SMALLINT PostgreSQL的
- 6. 休眠类型的区别:布尔,yes_no,true_false
- 7. 布尔类型值
- 8. 休眠需要值来保存孩子
- 9. 需要布尔值isTouched()
- 10. 我需要线程锁定值类型(布尔尤其是)
- 11. 休眠 - 复合值集合
- 12. BeginTransaction需要休眠吗?
- 13. 休眠需要manytomany关系
- 14. Scala的类型不匹配;发现:需要布尔:列表[INT]
- 15. 休眠投影与聚合函数
- 16. 聚集在休眠/ JPA
- 17. PostgreSQL:从布尔值更改列类型
- 18. 休眠 - 在实体中嵌入聚合列
- 19. 休眠注入类类型
- 20. 布尔值在这里需要
- 21. 需要在html中发送布尔值
- 22. 如何在休眠状态下设置布尔值?
- 23. 休眠PostgreSQL的布尔问题
- 24. 找不到布尔吸气休眠
- 25. 休眠中的实体和值类型
- 26. 嘲笑休眠自定义值类型
- 27. 休眠无法确定列的类型
- 28. 休眠+ H2不更新yes_no类型列
- 29. 休眠:用户类型 - nullSafeSet - 列长度
- 30. 休眠列类型问题(MySQL的)