gpt4 book ai didi

hibernate - 需要在hibernate中聚合boolean类型的列值

转载 作者:行者123 更新时间:2023-12-02 05:10:24 26 4
gpt4 key购买 nike

我有一个表,其中一列为 bool 类型,我需要在另一列上按投影使用分组。现在我想要选择列表中的所有列。所以我需要在所有列上使用聚合函数。

如果是 boolean 类型的列,应该使用什么?

最佳答案

Hibernate 中的聚合通过 SQL 中的聚合直接映射到相应的组,因此答案取决于如果您直接在 SQL 中编写查询,您将对 bool 列应用哪个 SQL 聚合函数。

Projections 类中的基本聚合函数本质上通常是数字的。您可以使用 count ,但这只会计算组中有多少行具有非空值,这似乎不是很有用。尽管我所知道的聚合函数都不会生成 bool 值,因此您可能必须执行一些自定义操作。

通过扩展 AggregateProjection 类,您可以提供用于投影的自定义 SQL 子句。通常,这将用于访问特定于平台的聚合函数(例如 STDDEV_POP),但您可以提供可在 SQL 查询中使用的任何有效 SQL 片段。例如,如果你想实现一个逻辑或(如果组中的任何行有一个真值,则为真)你可以使用类似的东西

if(sum(if(boolean_column,1,0))>0,true,false)

作为自定义投影的 toSqlString 方法返回的值。然后,您可以像使用 Projections 类中的任何标准选项一样使用此自定义类。

此类的实现有点棘手,因为您必须确保在字符串中使用的值是正确的 Hibernate 列别名,这很容易从 AggregateProjection 的 protected getColumnAlias 方法中获取。

关于hibernate - 需要在hibernate中聚合boolean类型的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6175622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com