Флажок «Показать удаленные» не работает должным образом

Я реализовал поведение мягкого удаления в своем воображаемом приложении для проката видео, и теперь я пытаюсь реализовать способ повторной активации моих «удаленных» клиентов, но я не могу заставить свой подход работать, конечно, что-то простое, но Google сделал не дай мне найти ответ, так что я здесь.

Вот выдержка из моего интерфейса репо (JpaRepository):

  @Query("select m from Movie m where m.isDeleted = true")
  List<Movie> findAllIsDeleted();

  @Override
  @Query("select m from Movie m where m.isDeleted=false")
  List<Movie> findAll();

  @Modifying
  @Transactional
  @Query("update Movie m set m.isDeleted=true where id=?1")
  void softDelete(Long id);

В моем классе обслуживания у меня есть:

  public List<Movie> findAllMovies(String filterText) {
    if (filterText == null || filterText.isEmpty()) {
      return movieRepository.findAll();
    } else {
      return movieRepository.search(filterText);
    }
  }

  public List<Movie> findAllDeletedMovies() {
    return movieRepository.findAllIsDeleted();
  }

И отрывок из моего класса listview выглядит так:

...
  Checkbox showDeleted = new Checkbox("Show deleted movies", e -> {
    updateList();
    Notification.show(e.getValue().toString());
  });
...
  private void updateList() {
    if (showDeleted.getValue() == true) {
      grid.setItems(service.findAllDeletedMovies());
    }
    grid.setItems(service.findAllMovies(filterText.getValue()));
  }

Но очевидно, что в части слушателя что-то не так, или есть молчаливое «конечно, мы хотим помочь», о котором я не знаю. Потому что функция updateList не выполняется. Что я пропустил?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
30
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не знаю, что вы дизайн таблицы данных, но вы можете попробовать это

"выберите m.* из Movie m, где m.isDeleted = true"

Спасибо, проблема не в запросе, а для справки, проблема в том, что метод updateList() не выполняется, когда я устанавливаю/снимаю флажок showDeleted....

Soccan 30.03.2022 15:05

всегда используйте средство форматирования и предоставляйте детали + вывод

MohammedAli 30.03.2022 15:36
Ответ принят как подходящий

Проблема заключается в реализации вашего updateList метода.

Независимо от того, истинно ли значение флажка, в конце он всегда снова устанавливает элементы, возвращаемые service::findAllMovies.

переместите последний оператор в блок else, и он должен работать.

private void updateList() {
    if (showDeleted.getValue()) { // btw, if (boolValue == true) is redundant. just do if (boolValue)
        grid.setItems(service.findAllDeletedMovies());
    } else {
        grid.setItems(service.findAllMovies(filterText.getValue()));
    }
}

Другие вопросы по теме