Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Выбор значений по фильтру / 4 сообщений из 4, страница 1 из 1
24.10.2014, 16:36
    #38786838
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор значений по фильтру
В базе есть int поля, необходимо сделать фильтр по значениям для этих полей.
Например: y<value<x, value<x, value>x, value=x .... Как лучше всего реализовать запрос на поиск по фильтру. Может сделать отдельный класс, типа:
Код: java
1.
2.
3.
public class Operation{
  String operation; ("less","between","greater", "equals") 
}


далее передавать в нем название поля, операцию и значение(я) для осуществления фильтрации.
Как вы делаете подобные вещи?
Спасибо
...
Рейтинг: 0 / 0
27.10.2014, 14:18
    #38788211
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор значений по фильтру
JulT,

Направление мысли правильное, но реализация никакая. Я бы делал через Enum с переопределяемыми методами. И каждый элмент замапил бы на операций в Criteria API, или чем вы там запросы строите. Что-то типа такого:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public enum FilterRestrinction{

   less{
        @Override
        public SimpleExpression apply(String property, Object value){
           return Restrictions.lt(property, value);
        }
   }

   public SimpleExpression abstract apply(String property, Object value);
}
...
Рейтинг: 0 / 0
27.10.2014, 14:18
    #38788215
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор значений по фильтру
Можно попробовать причесать код через лямбды Java 8.
...
Рейтинг: 0 / 0
27.10.2014, 15:10
    #38788293
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор значений по фильтру
BlazkowiczJulT,

Направление мысли правильное, но реализация никакая. Я бы делал через Enum с переопределяемыми методами. И каждый элмент замапил бы на операций в Criteria API, или чем вы там запросы строите. Что-то типа такого:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public enum FilterRestrinction{

   less{
        @Override
        public SimpleExpression apply(String property, Object value){
           return Restrictions.lt(property, value);
        }
   }

   public SimpleExpression abstract apply(String property, Object value);
}


ух!! круто, спасибо :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Выбор значений по фильтру / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]