JPA Specification CriteriaBuilder для JSON - PullRequest
0 голосов
/ 06 августа 2020

У меня есть класс сущности со следующим столбцом:

@Column(name="PRODUCT_PROPERTIES")
        private String productProperties;

Столбец product_properties содержит JSON следующих значений:

INSERT INTO Product(Product_type,Product_properties,Price,Store_address) VALUES
    ('phone','{color:grön}',277.00,'Blake gränden, Karlskrona'),
    ('subscription','{gb_limit:50}',415.00,'Odell gatan, Stockholm'),

Я реализую список спецификаций для отфильтровать большую часть данных на основе параметров запроса.

public static Specification<Product>  productPropertyTypeIs(String expression){
    return (root,query,builder) -> builder.like(root.get("productProperties"),"%" + expression + "%");
}

public static Specification<Product>  productColorIs(String expression){
    return (root,query,builder) -> builder.like(root.get("productProperties"),"%" + expression + "%");
}

Позже я использую эти спецификации для запроса данных следующим образом:

products = productRepository.findAll(specificationForProductType
                .and(specificationForMinPrice)
                .and(specificationForMaxPrice)
                .and(specificationForCity)
                .and(specificationForProductPropertyType)
                .and(specificationForProductColor));

Но я застрял в том, как сформировать спецификация для лимита ГБ. Например, скажем, мне нужна спецификация, которая возвращает мне только значения с gb_limit больше или меньше определенных ограничений.

Как мне это сделать? Я попытался изменить тип данных столбца, но думаю, должен быть способ сделать это без изменения типа данных.

Это приложение springboot с H2 в базе данных памяти.

...