JPA, как включить нулевые значения с Order by - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь упорядочить по полю подобъекта (поле «текст» от сущности «Природа», которое находится в сущности «Акт»). «Природа» - это поле 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 с нулевым «характером». Проблема в том, что hibernate не возвращает Acts, где «природа» равна нулю. Там нет ошибки вообще. Мне нужен результат с первыми актами с ненулевым "характером", упорядоченными по полю "текст", а затем со всеми актами с нулевым "характером"

Есть предложения? Спасибо

1 Ответ

0 голосов
/ 08 января 2019

Хорошо, я нашел решение: Мне нужно было присоединиться.

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