Хранение и поиск по JSON с неизвестными ключами в Postgres

Есть таблица settings в которой есть поле payload и не известно сколько ключей и какими они будут, известно только то что придет корректный JSON в котором допустим только 1 уровень, тоесть все значения ключенй это примитивы и строки, вложенных объектов нет.

{
    "a": 1,
    "b": 0.21,
    "c": "text"
}

Не один ключ не может содержать объект в духе "d": {...}

CREATE TABLE IF NOT EXISTS settings
(
    id          BIGSERIAL PRIMARY KEY,
    payload     TEXT           NOT NULL,
);

Сейчас используется тип TEXT, но необходимо реализовать поиск по контенту payload и не просто типа LIKE как в обычной строке, а по ключам как в объекте с потдержкой бызовых SQL запросов в духе: WHERE a > 0 AND b <= 1.4.

Возможно для этого подходит JSONB но он тоже как оказалось требует точного описания полей на стороне Hibernate в духе этого туториала.

Как можно реализовать подобный функционал на Postgres так что-бы это было совместимо с Spring Data?


Ответы (0 шт):