Условие логического атрибута Hibernate Criteria JSONB - PullRequest
0 голосов
/ 03 февраля 2020

Мой запрос выполняется нормально в окне sql:

select * from lstg where (transport #>>'{oneDriver}'):: boolean = true;

Как мы строим критерии с этим условием? Я попытался: // oneDriver - это логическое поле в поле модели типа jsonb // transport - это имя столбца jsonb, а oneDriver - это атрибут в нем

if (searchCriteria.getOneDriver() != null) {
      predicates.add(cb.equal(
          cb.function("jsonb_extract_path_text", Boolean.class,
              root.get("transport"), cb.literal("oneDriver")),
          searchCriteria.getOneDriver()));
    }

При использовании этого сервиса выдается сообщение об ошибке:

Причина: org. postgresql .util.PSQLException: ОШИБКА: оператор не существует: text = логический Подсказка: ни один оператор не соответствует данному имени и типу (аргументам) аргумента. Возможно, вам понадобится добавить явные приведения типов.
Позиция: 1439

Как мы можем добавить приведение с использованием методов функций hibernate?

...