Запрос критериев JPA на поле карты - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть столбец типа JSONB в моей базе данных PostgreSQL, и я хочу искать только значения в парах ключ-значение.В Postgres существует функция для извлечения этого, которая jsonb_each_text .(См .: https://www.postgresql.org/docs/9.5/functions-json.html)

Возвращает 2 столбца: ключ (список ключей) и значение списка значений. Например:

ключ | значение
----- +-------
a | "foo"
b | "bar"

Объект выглядит примерно так:

@Entity
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
@TypeDef(name = "pgsql_enum", typeClass = PostgreSQLEnumType.class)
public class Book {

... other fields

@Column(columnDefinition = "jsonb")
@Type(type = "jsonb")
private Map<String, String> metadata;

}

Я пробовал что-то об этомприрода, но я не могу понять, как извлечь только значения из списка.

predicates.add(criteriaBuilder.like(criteriaBuilder.function("jsonb_each_text", Map.class, book.get("metadata")), "%" + searchTerm + "%"));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...