Hibernate IN / ANY с настраиваемым конвертером в критериях - PullRequest
0 голосов
/ 10 июля 2020

У меня есть простая модель, например:

    class A {
        @Type(type = "com.vivek.persistence.ListAsSQLArrayUserType")
        @Column(name = "string_array", columnDefinition = "text[]")
        List<String> stringArray;
    }

Теперь я хочу найти любой элемент, существующий в столбце stringArray. Я могу сделать это, просто используя sql собственный запрос:

select * from A WHERE 'abc' = any(string_array)

Но я не могу понять, как это сделать через Hibernate Criteria API. Я пробовал IN предикат , но он просто не работает и возвращает пустой результат. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 июля 2020

Я нашел решение, которое можно указать от c до postgres, используя criterionBuilder.function () . Это решило мою проблему.

String value = "abc"; // anything
criteriaBuilder.equal(criteriaBuilder.literal(value), criteriaBuilder.function("any", String.class, root.get(name)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...