У меня есть класс сущности со следующим столбцом:
@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 в базе данных памяти.