Как можно удалить критерий из критериев?

Например, если я делаю что-то как:

Criteria c = session.createCriteria(Book.class)
             .add(Expression.ge("release",reDate);
             .add(Expression.ge("price",price);
             .addOrder( Order.asc("date") )
             .setFirstResult(0)
             .setMaxResults(10);
c.list();

Как я могу использовать тот же экземпляр критериев, но удалить (например), второй критерий? Я пытаюсь создать динамический запрос, в котором я хотел бы позволить пользователю удалить фильтр без бэкенда, имеющего необходимость восстановить критерии с нуля.

Спасибо

6
задан Mikko Maunu 17 December 2017 в 12:42
поделиться

2 ответа

Насколько мне известно, невозможно удалить элементы (ограничения, упорядочение и т. Д.) Из запроса критериев после его создания. Я недостаточно осведомлен о внутреннем устройстве Criteria API, но я знаю, что в открытом интерфейсе ничего нет. Вы можете попробовать манипулировать объектами, которые вы передаете в add или addOrder , но это звучит как больше работы, чем она того стоит, особенно когда есть более чистые альтернативы.

Критериальные запросы, безусловно, использовались однозначно в каждом приложении, которое я видел.

Теперь вы можете сохранить свои ограничения, упорядочение и лимиты в настраиваемом формате (например, Коллекция ), а затем довольно легко построить свой запрос из этого сохраненного формата. Это, вероятно, будет иметь больше смысла для вашего пользовательского интерфейса, поскольку вам определенно понадобится детальный контроль оттуда.

Я уверен, что это не тот ответ, который вы ищете, но это именно то, что я делал в прошлом.

HTH

6
ответ дан 16 December 2019 в 21:38
поделиться

Как я могу использовать тот же экземпляр критерия, но удалить (например) второй критерий? Я пытаюсь создать динамический запрос, в котором я хотел бы позволить пользователю удалить фильтр, без необходимости восстановления критериев с нуля серверной части.

Вы не можете, вам придется повторно отправить весь (обновленный) набор параметров, используемых для построения динамического запроса.

1
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: