当我按一些文本字段分组时,我想用条件构建器创建sql查询。这种情况是我想要将具有空值和空字符串的字段组合在一起(我知道null和空字符串之间存在差异,但这就是它已经完成的方式,逻辑上没有区别)。它就像在这里MySQL GROUP BY NULL and 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
案例是在创建hibernate查询时这样写它?在查询和hibernate中不确定它们是否是相同的值。我在SELECT和GROUP BY中都使用了该表达式,我得到了ERROR:value必须出现在GROUP BY子句中或者用在聚合函数中
有没有办法在条件构建器中执行此操作,例如创建一些常量空字符串值,将其转换为sql而不是?或者将空值和空字符串分组在一起的其他方法。
我正在使用PostgreSQL,Hibernate,Java。
我将感激每一个答案