Criteria builder将null和空字符串分组在一起

时间:2013-04-29 12:17:42

标签: java jdbc criteria-api

当我按一些文本字段分组时,我想用条件构建器创建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。

我将感激每一个答案

0 个答案:

没有答案