Понадобилось как-то в SAP Hybris настроить поиск по составному полю (состоящему из нескольких атрибутов продукта). Так, чтобы при запросе вида «желтый ботинок» в листинге товаров сначала выдавались не просто товары желтого цвета, а именно желтые ботинки (а затем — остальные ботинки). Решить это регулировкой коэффициентов усиления поиска по отдельным свойствам (boost) не удалось, пришлось городить огород с созданием и индексацией составного поля.
Модель товара ProductModel
Итак, в предлагаемом примере товар (Product) имеет два атрибута (помимо прочих), по которым надо искать в связке:
Понадобилось добавить ограничение цены для товара в SAP Commerce (Hybris) — десятичная цена должна быть больше или равна нулю.
В принципе — это не сложно сделать через Backoffice (Система - Проверка - Ограничения), но тогда, при переиницаиализации платформы, внесённые изменения будут удалены. Поэтому — лучше создать файл impex, который автоматически накатится при обновлении или инициализации Hybris.
Чтобы не забыть — сохраню себе на память содержимое такого файла. Проверить работоспособность можно вручную — в HAC (Console - ImpEx Import), после чего надо перезагрузить механизм ограничений в Backoffice.
Что даёт это ограничение — при попытке задать товару нулевую или отрицательную цену — будет выскакивать соответствующее сообщение об ошибке (содержимое message[lang=en] или message[lang=ru], в зависимости от текущей локали).
INSERT_UPDATE DecimalMinConstraint;id[unique=true];severity(code,itemtype(code));active;annotation;descriptor(enclosingType(code),qualifier);message[lang=en];message[lang=ru];value;inclusive
;PriceMustBeGreaterThanZero;ERROR:Severity;true;javax.validation.constraints.DecimalMin;PriceRow:price;Price must be greater than zero;Цена должна быть больше нуля;0,00000000;false
Perl, Linux, программирование, настройка и что-нибудь ещё…