поиск сущностей по параметрам

214
29 августа 2017, 10:24

Как реализовать удобный фильтр по параметрам при работе с бд? Есть определенные параметры, к примеру цвет, длина, вес которые приходят с UI. В контроллере все это обрабатывается как-то. И уже на слое репозитория согласно параметрам надо извлечь нужные объекты. К примеру сначала выбирается допустим вес 20кг, а потом еще + параметр длина 2м, итого уже два параметра в запросе должно участвовать. И так до +5...10 параметров. Предлагать все Hibernate, Jpa, Spring jdbc, data-jpa. Может есть какой-то незамысловатый способ это осуществить?

Answer 1
  1. Вариант 1. Используйте Apache Lucene либо Sphinx. Apache Lucene написан на Java, поэтому легко его интегрировать в проект на Spring. Sphinx запускается как отдельный процесс с общением по TCP (или через pipe), поэтому нужно писать свой менеджер подключений или использовать порт API на JAVA, который последний раз обновлялся лет 10 лет назад. Но Sphinx есть меньше ресурсов, а для Lucene нужно от 2 Гб RAM для нормальной работы.

  2. Вариант 2. Создаете 3 таблицы: item - товар, property - свойство, item_property - соответствие свойства товару.

Например, будет:

item:
---------
id | name
--------- 
1  | IPhone
property:
---------
id | name
---------
1  | Вес
2  | Цвет
item_property:
-----------------------------
item_id | property_id | value
-----------------------------
1       | 1           | 5
1       | 2           | белый

Тогда выбирать вы будете через INNER JOIN и UNION ALL. То есть для запросов Hibernate вам не поможет - нужно будет использовать нативные запросы.

READ ALSO
Как зациклить массив? Java

Как зациклить массив? Java

Есть массив из n элементов, и есть массив из k элементов, так вот, мне нужно что бы К массив заполнялся элементами из n, но при условии что n < k

517
Ошибка 403 Forbidden с favicon.ico

Ошибка 403 Forbidden с favicon.ico

Проблема с faviconico Всё сделал как было написано

287
Проброс значения data-атрибута при клике [дубликат]

Проброс значения data-атрибута при клике [дубликат]

На данный вопрос уже ответили:

267
Почему стили не применяются к второму элементу?

Почему стили не применяются к второму элементу?

Всем привет Есть подобная структура :

315