JPA 如何在排序依据中包含空值



我正在尝试按子实体的字段("Act"实体中"自然"实体中的"文本"字段)进行排序。"自然"实体是 actRoot 的一个字段。

这是我的代码:

 @Override
    public Order apply(Root<Act> actRoot, CriteriaBuilder builder) {
        Expression<?> nature = builder.selectCase()
                .when(builder.isNull(actRoot.get("nature")), "")
                .otherwise(actRoot.get("nature").get("text"))
                .as(String.class);
        return builder.asc(nature);
    }

所以我创建了一个字符串类型的临时表,默认为空值的 Acts,具有空"性质"。问题是休眠不会返回"自然"为空的行为。完全没有错误。我需要一个结果,首先是按"文本"字段排序的非空"自然"行为,然后是所有具有空"性质"

的行为

有什么建议吗?谢谢

好的

,我找到了解决方案:我需要一个联接。

  @Override
    public Order apply(Root<Act> actRoot, CriteriaBuilder builder) {
        Join join = actRoot.join("nature", LEFT);
        return builder.asc(join.get("text"));
    }

相关内容

  • 没有找到相关文章

最新更新