3

当我将按某些文本字段进行分组时,我想使用标准生成器创建 sql 查询。情况是我想将具有空值和空字符串的字段分组在一起(我知道空字符串和空字符串之间存在差异,但这就是它已经完成的方式,逻辑上没有区别)。就像这里的MySQL GROUP BY NULL 和 EMPTY但我想在标准生成器中执行它,这就是问题所在。我无法使用 builder.coalesce(entity.get("value"), "") 或使用 builder.literal("") 替换 "" 来使合并工作,如示例中所示:

public void groupBy(Path path){
    Expression group = builder.coalesce(entity.get("value"), ""); this doesn't work
    Expression<String> empty = builder.literal("");
    group = builder.coalesce(entity.get("value"), empty); this doesn't work either

情况是在创建休眠查询时这样写有?在查询和休眠中不确定它们是否是相同的值。我在 SELECT 和 GROUP BY 中都使用了该表达式,但出现错误:值必须出现在 GROUP BY 子句中或用于聚合函数中

有没有办法在标准构建器中执行此操作,例如创建一些常量空字符串值,将其转换为 sql 为 '' 而不是?或将空值和空字符串组合在一起的其他方式。

我正在使用 PostgreSQL、Hibernate、Java。

我会感谢每一个答案

4

0 回答 0